wordpress仿站难吗,临沂苍山网站建设,冷库网站建设,校园网站设计代码【Entity Framework】 EF三种开发模式 文章目录 【Entity Framework】 EF三种开发模式一、概述二、DataBase First2.1 DataBase First简介2.2 DataBase First应用步骤2.3 DataBase First总结 三、Model First3.1 Model First简介3.2 Model First实现步骤 四、Code First4.1 Cod…【Entity Framework】 EF三种开发模式 文章目录 【Entity Framework】 EF三种开发模式一、概述二、DataBase First2.1 DataBase First简介2.2 DataBase First应用步骤2.3 DataBase First总结 三、Model First3.1 Model First简介3.2 Model First实现步骤 四、Code First4.1 Code First概述4.2 Code First实现步骤4.3 Code First的映射规则 一、概述
前面博文已介绍了Entity Framework是什么EF架构等基本知识介绍。本文将从介绍Entity Framework使用的三种方式。
Entity Framework的底层其实是调用ADO.NET它是更高层次的封装作为数据访问的技术。Entity Framework设计的高扩展性体现在灵活的映射定义。简单的说使用Entity Framework可以充分定义与数据库表映射的实体这个实体可以直接用于业务逻辑层或作为服务的数据契约。使用EF后可以将实体类的设计工作完全放在EDM设计过程中而不需要手工写哪些大同小异的代码令人欣喜的是这个实体模型可以在运行时修改并生效我们开发时也不用再频繁地与数据库打交道。只要通过操作实体模型就能完成对数据库的操作。
EF框架可以划分一下三种应用模式
DataBase FirstModel FirstCode First
下面将详细介绍下面三种模式
二、DataBase First
DataBase First参考
2.1 DataBase First简介
Database First就是先建数据库或使用已有的数据库。然后再vs中添加ADO.Net实体数据模型设置连接并且选择需要的数据库和表。它是以数据库设计为基础的并根据数据库自动生成实体数据模型从而驱动整个开发流程。除生成实体模型和自跟踪实现模型还支持生成轻型DbContext。这种模式的好处是使用简单容易上手。比较适合于采用已经存在的数据库进行开发。既通过简单的方式实现了又重用了数据库。
2.2 DataBase First应用步骤
如果使用DataBase First模式先创建好对应的数据库及表。
现在项目-添加新项-选择ADO.NET实体数据模型。打开启动实体数据模型向导选择“从数据库生成”并创建数据库连接字符串。单击“表”旁边的复选框以导入所有表然后单击“完成”
2.3 DataBase First总结
Database First开发它允许我们基于现有数据库在EF设计器中创建模型。然后我们使用该模型在数据库中读取和写入一些数据。
三、Model First
3.1 Model First简介
Model First 允许你使用实体框架设计器创建新模型然后从该模型生成数据库架构。 模型存储在 EDMX 文件.edmx 扩展名中可以在实体框架设计器中查看和编辑。 你在应用程序中与之交互的类是从 EDMX 文件自动生成的。
3.2 Model First实现步骤
使用 Visual Studio 中包含的实体框架设计器来创建模型 “项目” -“添加新项…”从左侧菜单中选择“数据”然后选择ADO.NET实体数据模型输入“xxxModel”名称并单击确定这将启动实体数据模型向导选择“空模型”并单击“完成” 向模型添加实体、属性和关联 右键单击设计图面并选择“属性”在“属性”窗口中将“实体容器名称”更改为 xxxContext。这是将为你生成的派生上下文的名称该上下文表示与数据库的会话允许我们查询和保存数据右键单击设计图面并选择“添加新项”-“实体…”输入 Blog 作为实体名称输入 BlogId 作为键名称然后单击“确定”右键单击设计图面上的新实体并选择“添加新项”-“标量属性”输入 Name 作为属性名称。重复此过程以添加 URL 属性。右键单击设计图面上的 URL 属性并选择“属性”在“属性”窗口中将“可为 null” 设置更改为 True。这样我们无需为 Blog 分配 URL 即可将其保存到数据库中 添加关联或关系 右键单击设计图面并选择“添加新项”-“关联…”使关系的一端指向 Blog多重性为“一”另一端指向 Post多重性为“多”。这意味着一个 Blog 有多个 Post而一个 Post 属于一个 Blog确保选中“将外键属性添加到“Post”实体”框然后单击“确定”
四、Code First
4.1 Code First概述
Code First模式我们称之为“代码优先”模式从某种角度来看其实“Code First”和“Model First”区别并不是太明显只是它不借助于实体数据模型设计器而是直接通过编码方式设计实体模型这也是为什么最开始“Code First”被叫做“Code Only”的原因。但是对于EF它的处理过程有所差别例如我们使用Code First就不再需要EDM文件所有的映射通过“数据注释”和“fluent API”进行映射和配置。
4.2 Code First实现步骤
添加类创建实体模型并创建导航属性设置实体模型之间关系。安装Entity Framework包 通过NuGet在线安装Entity Framework包使用程序包管理器控制台通过Install-package EntityFramework命令安装 创建dbContext上下文 首先在配置文件中app.config中配置数据库链接字符串接下来创建dbContext类此类继承System.Data.Entity.DbContext类其构造函数调用了积累带参数的构造函数用来读取配置文件中的数据库链接字符串。 对数据进行增删改查操作 使用dbContext对象对数据库进行操作
4.3 Code First的映射规则 关于表和字段名的约定 Code First约定表名使用实体类名的复数形式来命名表明属性映射的列使用与类中属性一致的名字命名 关于主键的约定 Code First默认规定将命名为Id或[类名]Id的属性是为类的主键如果是int类型或GUID类型同时会设为标识列。 关于字符串属性的约定 Code First将String类型属性映射为不限长度的非空列中。默认数据类型为nvarchar(max)且允许为空。 关于布尔属性的约定 Code First将bool类型属性映射为bit类型且不允许为空 关于外键的约定 对于外键如果在类中添加了引用类型而这个引用类型也在Entity Framework的上下文中EF会把这种属性成为导航属性。 一旦EF在类中检索到导航属性就会寻找对应的外键。EF会认为属性名Id或者类名Id可能就是外键属性如果找到名称一致且类型与导航属性目标类的主键类型一致则认为是外键。如果类型不一致EF则会认为该类设置有误。 如果没有找到符合要求的属性EF会自己添加一个外键属性。另外对于不同的关系也有一些不同的约定。 一对一关系要求导航属性双方都应该具有外键配置。一对多关系要求多的一方设置外键。同时如果在一方这边设置了集合类型的导航属性那么EF会自动到目标类中寻找外键属性。多对多关系会生成一个中间关系表。