码迷,mamicode.com
首页 > 其他好文 > 详细

EntityFramework6.X 之 Fulent

时间:2017-05-23 10:08:54      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:fluent   类型   UI   数据库   enter   complex   char   tab   实体类   

Fulent

Fulent是配置领域模型类的另一个方法,它比DataAnnotations提供更多的配置,提供以下三种方法映射

Mappings

To Database

Model-Wide Mapping

设置默认架构,设置经典约束

Entity Mapping

映射单个或多个表格或架构,映射复杂类型,继承策略

Property Mapping

属性、属性名、列类型、非空或非空列、列宽、列序列;并发列;外键列;配置关系

通常Fulent是在dbContext类或派生类中重写OnModelCreating方法定义,如下假设已经定义了Student领域类和Standard领域类

 技术分享

 

EntityTypeConfiguration Class

该类是一个非常重要的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>();

Entity Mappings

可设置默认的架构

 技术分享

也可将实体配置到制定表

 技术分享

将一个实体类配置到多个表中

 技术分享

技术分享

Property Mappings

 技术分享

Property用于为每个属于实体或复杂类型的属性配置特性。Property方法用于获取给定属性的配置对象。配置字符串属性是否支持Unicode内容,默认情况下,字符串为Unicode(SQLServer中的nvarchar),可以使用IsUnicode方法指定字符串应为varchar类型

Eg:modelBuilder.Entity<Department>().Property(t=>t.Name).IsUnicode(false);

先将领域类定义好

 技术分享

1)      配置主键约束和组合主键

 技术分享

2)      配置列名、类型和顺序,不仅仅可以通过方法,也可以通过HasColumnAnnotation配置

 技术分享

技术分享

3)      配置空和非空列

 技术分享

4)      配置列宽

 技术分享

5)      配置并发列

 技术分享

 

EntityFramework6.X 之 Fulent

标签:fluent   类型   UI   数据库   enter   complex   char   tab   实体类   

原文地址:http://www.cnblogs.com/Terrece/p/6892591.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!