使用 Fluent API 配置/映射属性和类型
2015-06-30 22:42
591 查看
配置EF使之在映射数据时绕开约定:注释和Fluent API。注释仅涵盖一部分Fluent API功能。
通过重写
类定义名称称为“ID”或“Id”的属性
或类名后跟“ID”或"Id"
要显示将某个属性设置为主键,可使用HasKey方法。
也可以指定架构名称
通过重写
DbContext上的
OnModelCreating方法来访问Code First Fluent API。
属性映射
Property方法用于为每个属于实体或复杂类型的属性配置特性。Property方法用于获取给定属性的配置对象。配置对象上的选项特定于要配置的类型(IsUnicode只能用于字符串属性)配置主键
有关主键的实体框架约定如下:类定义名称称为“ID”或“Id”的属性
或类名后跟“ID”或"Id"
要显示将某个属性设置为主键,可使用HasKey方法。
modelBuilder.Entity<Person>().HasKey(t => t.Id)
配置组合主键
modelBuilder.Entity<Person>().HasKey(t => new { t.Id ,t.Name});
关闭数值主键标识
modelBuilder.Entity<Person>().Property(t => t.Id) .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
指定属性的最大长度
如果超出最大长度,将引发DbEntityValidationException异常
modelBuilder.Entity<Person>().Property(t => t.Name) .HasMaxLength(50);
将属性配置为必须
modelBuilder.Entity<Person>().Property(t => t.Name) .IsRequired();
指定不将CLR属性映射到数据库中的列
modelBuilder.Entity<Person>().Ignore(t => t.Name);
将CLR属性映射到数据库中的特定列
以下将Name CLR属性映射到数据库中的"myNmae"列modelBuilder.Entity<Person>().Property(t => t.Name) .HasColumnName("myname");
配置字符串属性是否支持unicode内容
默认情况下,字符串为Unicode(sqlserver中的nvarchar),可以使用IsUnicode方法指定字符串为varchar类型modelBuilder.Entity<Person>() .Property(t => t.Name).IsUnicode(false);
配置数据库列的数据类型
modelBuilder.Entity<Person>() .Property(t => t.Name).HasColumnType("varchar");
将属性配置为用作并发令牌
modelBuilder.Entity<OfficeAssignment>() .Property(t => t.Timestamp) .IsConcurrencyToken();
类型映射
将类型指定为复杂类型
按约定,没有指定主键的类型将被视为复杂类型。在一些情况下,Code First不会检测复杂类型modelBuilder.ComplexType<Details>();
指定不将CLR实体类映射到数据库中的表
modelBuilder.Ignore<OnlineCourse>();
将CLR实体类型映射到数据库中的特定表
modelBuilder.Entity<Department>() .ToTable("t_Department");
也可以指定架构名称
modelBuilder.Entity<User>().ToTable("User","System");
相关文章推荐
- UIActionSheet(操作列表)
- GUI图形用户界面
- java多线程之阻塞队列BlockingQueue的简单应用
- JS获取request的字符串变量,复选框的选中赋值
- UIScreen的 bound、frame、scale属性
- 网狐棋牌(二) CQueueServiceEvent初步分析
- 网狐棋牌(一) ServerKernel中的IQueueService接口分析
- [POJ 3061] Subsequence
- Quick Reference:php5 Phar文件生成
- iOS笔记055 - UI总结01
- java.util.concurrent.BlockingQueue初探
- 随机获取一个集合(List, Set)中的元素,随机获取一个Map中的key或value
- IOS--UI--LessonView Plus(Frame CGRect center Bounds )
- UI基础:UIView(window,frame,UIColor,CGPoint,alpha,CGRect等)
- UI基础:UIView(window,frame,UIColor,CGPoint,alpha,CGRect等) 分类: iOS学习-UI 2015-06-30 20:01 119人阅读 评论(0) 收藏
- iOS 9 新增 UIStackView 官方文档翻译
- No sources that matches the given name (at 'layout_toLeftOf' with value '@id/
- IOC--UI--LessonView
- easyUI 获取combobox全部数值进行对比方法
- UIDragDropItem拖拽不能离开scrollview范围