EntityFramework6.X 之 Fulent

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)      配置并发列

时间: 2024-08-15 07:02:33

EntityFramework6.X 之 Fulent的相关文章

EntityFramework6执行MySql的存储过程出现错误的解决办法

来源:EntityFramework6 method: public ObjectResult<TElement> ExecuteFunction<TElement>( string functionName, params ObjectParameter[] parameters ) 错误信息: 解决办法: 1. 在Model项目右键-->重新生成: 2.重新生成模型(未测).

EntityFramework6 快速入门教程

EntityFramework6 快速入门教程 不得不说EF在国内实在是太小众,相关的技术文章真实屈指可数,而且很多文章都很旧了,里面使用的版本跟如今的EF6差别还是比较大.我刚开始弄这个的时候真是绕了不少弯路. 学习EF还是需要一些条件,使用EF并不意味着你就可以完全不跟数据库打交道了,要学好EF,数据库中的什么主键.外键.索引.SQL等你还是要懂,另外EF中将大量使用LINQ来进行数据查询,数据模型中还将涉及到特性与泛型,所以对于C#的基础要求还比较高. 在我看来EF并不适合初学者使用,虽然

使用EntityFramework6连接MySql数据库(db first方式)

查看了 逆水寒龙前辈的 使用EntityFramework6连接MySql数据库(db first方式) 自己亲自实践 遇到一点问 mysql-connector-net-x.x.x.msi mysql-for-visualstudio-x.x.x.msi 这两个东西需要使用最新版本,老版本装不上. 安装nuget包 不需要带版本号 Install-Package EntityFramework Install-Package MySql.Data.Entity 带版本号也会出现这个错误 提醒一

EntityFramework6 版本更变产生的错误

LINQ to Entities does not recognize the method 'System.Nullable`1[System.Int32] DiffMinutes(System.Nullable`1[System.DateTime], System.Nullable`1[System.DateTime])' method, and this method cannot be translated into a store expression. 解决:EntityFuncti

使用EntityFramework6连接MySQL

使用EntityFramework6连接MySQL 不是微软的亲儿子这待遇就是不一样,其中的坑可真实不少,为了连MySQL足足折腾了我大半天. 废话不多说直接开始. 安装MySQL 从官网上下载最新版,下载好以后直接安装就可以了.最新版的MySQL已经包含了所有开发需要的功能(包括MySQL连接器),相信会用MySQL,怎么装应该都没有问题,这里就不啰嗦了.不过有一点值得提醒的是,在选择要安装的内容时记得将所有功能都装上,之后出现问题多半都是哪个模块漏装了. 安装好之后,在开始菜单中找到MySQ

[转]在EntityFramework6中执行SQL语句

本文转自:http://www.cnblogs.com/wujingtao/p/5412329.html 在上一节中我介绍了如何使用EF6对数据库实现CRDU以及事务,我们没有写一句SQL就完成了所有操作.这一节我来介绍一下如何使用在EF6中执行SQL语句. 你可能要问,我用EF不就为了避免写SQL吗?如果要写SQL我不如直接用ADO.NET得了.话虽然这么说没错,可有些时候使用EF操作数据还是有一些不方便,例如让你根据条件删除一组记录,如果按照正常的流程来走,你就得先把这些数据查出来,然后再一

EntityFramework6 入门教程

EntityFramework6 入门教程 不得不说EF在国内实在是太小众,相关的技术文章真实屈指可数,而且很多文章都很旧了,里面使用的版本跟如今的EF6差别还是比较大.我刚开始弄这个的时候真是绕了不少弯路. 学习EF还是需要一些条件,使用EF并不意味着你就可以完全不跟数据库打交道了,要学好EF,数据库中的什么主键.外键.索引.SQL等你还是要懂,另外EF中将大量使用LINQ来进行数据查询,数据模型中还将涉及到特性与泛型,所以对于C#的基础要求还比较高. 在我看来EF并不适合初学者使用,虽然微软

初识EntityFramework6

初识EntityFramework6 什么是EF? EF是一种ORM(Object-relational mapping)框架,它能把我们在编程时使用对象映射到底层的数据库结构.比如,你可以在数据库中建立一个Order表,让它与程序中的Order类建立映射关系,这样一来,程序中的每个Order对象都对应着Order表中的一条记录,ORM框架负责把从数据库传回的记录集转换为对象,也可以依据对象当前所处的具体状态生成相应的SQL命令发给数据库,完成数据的存取工作(常见的数据存取操作可简称为CRUD:

使用EntityFramework6完成增删查改和事务

使用EntityFramework6完成增删查改和事务 上一节我们已经学习了如何使用EF连接数据库,并简单演示了一下如何使用EF6对数据库进行操作,这一节我来详细讲解一下. 使用EF对数据库进行操作,整个过程就像操作数组一样,我们只管修改或向集合中添加值,最后通知EF保存修改后的结果就可以了. 准备工作 为了演示,我在数据库中建了两张表.class表用于表示班级,class_id是班级编号,class_name是班级名称.第二张表是学生表student,student_id为学生编号,name为