标签:fluent 类型 UI 数据库 enter complex char tab 实体类
Fulent是配置领域模型类的另一个方法,它比DataAnnotations提供更多的配置,提供以下三种方法映射
| 
 Mappings  | 
 To Database  | 
| 
 Model-Wide Mapping  | 
 设置默认架构,设置经典约束  | 
| 
 Entity Mapping  | 
 映射单个或多个表格或架构,映射复杂类型,继承策略  | 
| 
 Property Mapping  | 
 属性、属性名、列类型、非空或非空列、列宽、列序列;并发列;外键列;配置关系  | 
通常Fulent是在dbContext类或派生类中重写OnModelCreating方法定义,如下假设已经定义了Student领域类和Standard领域类
 
该类是一个非常重要的fluent API函数,提供了重要的方法去配置实体类和属性,通过Entity<TEntity>()方法调用

| 
 Method Name  | 
 Description  | 
| 
 HasKey<TKey>  | 
 配置实体的主键约束  | 
| 
 HasMany<TTargetEntity>  | 
 从这个实体开始配置一个多对多的关系  | 
| 
 HasOptional<TTargetEntity>  | 
 从这个实体配置一个可选关系,没有被关系指定的一方将可以保存到数据库中,外键可以为空  | 
| 
 HasRequired<TTargetEntity>  | 
 从这个实体配置一个必须关系,只有在确定关系的情况下实体类型实例才能被保存到数据库,否则外键列将会空  | 
| 
 Ignore<TProperty>  | 
 从领域模型中排除一个属性,该属性将不映射到数据库中  | 
| 
 Map  | 
 允许高级配置该模型的数据库模型  | 
| 
 Property<T>  | 
 配置一个已经定义的类型的结构属性  | 
| 
 ToTable  | 
 将领域类映射到数据库中的表名  | 
1) 将类型指定为复杂类型
按约定,没有指定主键的类型将被视为复杂类型
Eg: modelBuilder.ComplexType<Details>();
2) 指定不将CLR实体类型映射到数据库中的表
简单说就是不将实体类型映射到数据库表中
Eg: modelBuilder.Ignore<OnlineCourse>();
可设置默认的架构
 
也可将实体配置到制定表
 
将一个实体类配置到多个表中
 

 
Property用于为每个属于实体或复杂类型的属性配置特性。Property方法用于获取给定属性的配置对象。配置字符串属性是否支持Unicode内容,默认情况下,字符串为Unicode(SQLServer中的nvarchar),可以使用IsUnicode方法指定字符串应为varchar类型
Eg:modelBuilder.Entity<Department>().Property(t=>t.Name).IsUnicode(false);
先将领域类定义好
 
1) 配置主键约束和组合主键
 
2) 配置列名、类型和顺序,不仅仅可以通过方法,也可以通过HasColumnAnnotation配置
 

3) 配置空和非空列
 
4) 配置列宽
 
5) 配置并发列
 
标签:fluent 类型 UI 数据库 enter complex char tab 实体类
原文地址:http://www.cnblogs.com/Terrece/p/6892591.html