你的位置:首页 > 软件开发 > ASP.net > 《Entity Framework 6 Recipes》翻译系列 3

《Entity Framework 6 Recipes》翻译系列 3

发布时间:2015-05-06 16:02:17
第二章 实体数据建模基础  很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始。如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以跳过本章。  本章将带你漫游使用实体框 ...

第二章 实体数据建模基础

  很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始。如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以跳过本章。

  本章将带你漫游使用实体框架建模的基本实例,建模是实体框架的核心特性,同时也是区别实体框架和微软早期的数据访问平台的特性。一旦建好模,你就可以面向模型编写代码,而不用面向关系数据库中的行和列。

  本章以创建一个简单概念模型的实例开始,然后让实体框架创建底层的数据库,剩下的实例,将向你展示,如何通过数据库中已存在的表以及它们之间的关系来建模。

2-1 创建一个简单模型

  问题

  你有一个崭新的项上,你需要创建一个模型。

  解决方案

  我们设想你需要创建一个管理,人员姓名、电话号码的应用程序。为了保持尽可能的简单,我们假设你只需要一个实体类型:Person。

    按以下步骤来创建模型:

      1.右键你的项目,然后选择➤New Item(新建项)。

      2.从模板中选择 ADO.NET Entity Data Model(ADO.NET实体数据模型),然后点击Add(增加)。该模板在Visual C#条目下面的Data项下面。(如图2-1)。

《Entity Framework 6 Recipes》翻译系列 3

 图2-1 增加一个新的.emdx文件,其中包含使用

      3.在向导第一步选择Empty Model(空模型)并点击Finish(完成)按钮。向导将创建一个新的设计器界面上为空的概念模型。

      4.右键计设器界面,选择增加➤Entity(实体)。

      5.在Entity Name(实体名称)字段键入Person,选中Create a Key Propety(创建实体键)复选框,使用Id作为实体键并确保其类型为Int32.点击OK按钮,一个新的Person实体便出现在设计器窗口中(如图2-2)。

《Entity Framework 6 Recipes》翻译系列 3

图2-2在概念模型中添加一个代表Person的实体类

      6.右键Person实体顶部,然后选择Add(添加) ➤Scalar Property(标量属性)。一个新的标量属性便添加到了Person实体中。

      7.将增加的标量属性重命名为Firstname.然后继续添加标量属性LastName、MiddleName和PhoneNumber.

      8.右键Id属性并选择Properties(属性),在属性窗口中,如果StoreGneneratedPattern属性值未设置为Identity时,将其设置为Identity。该标识是指Id属性的值将由存储层(数据库)计算产生。最终得到的数据库脚本会标识Id列为identity列,存储逻辑模型也会知道,数据库将会自动管理该列的值。

    完成后的概念模型如图2-3所示。

《Entity Framework 6 Recipes》翻译系列 3

图2-3 模型包含一个代表Person的实体类型

    你已经完成了一个简单的概念模型。不过从该模型生成数据库,还有一些工作要做: 

      9.需要更改我们模型的一些属性,以帮助我们生成数据库。右键计设器窗口,选择properties(属性)。更改数据库架构名称(Database Schema name)为Chapter2,更改实体容器名称(Entity Container Name)为EF6ReciptesContext。如图2-4所示。

《Entity Framework 6 Recipes》翻译系列 3

图2-4 更改模型属性

      10.右键设计器窗口并选择Generate Database Script from Model(从模型生成数据库脚本)。选择一个已存在的数据库连接或者新建一个连接。图2-5,我们选择创建一个新的本地数据库EF6Recipes的连接。

《Entity Framework 6 Recipes》翻译系列 3

图2-5创建一个实体框架从概念模型创建数据库脚本要使用的数据库连接

      11.单击OK按钮完成连接属性设置,然后单击Next(下一步)预览数据库脚本(如图2-6)。一旦点击Finish(完成),生成的脚本就被添加到你的项目中。

《Entity Framework 6 Recipes》翻译系列 3

图2-6 在.edmx文件中生成存储逻辑模型并创建数据库脚本

      12.在SSMS(SQL Server Management Studio)查询窗口中执行上面生成的数据库脚本创建数据库和People表。

 原理

  实体框架设计器是一个创建概念模型、存储模型和映射层的强有力工具。它提供双向建模的功能,你可以从一个空白的模型设计窗口建模,也可通过导入一个已存在的数据库来创建概念模型、存储模型和映射层。当前版本提供了有限的双向建模功能,它允许从模型重新创建数据库,根据数据库的改变来更新模型。

  概念模型拥有很多影响生成存储逻辑模型和数据库脚本的属性,我们更改了其中的两个属性,第一个是容器的名称,他是继承至DbContext上下文对象。我们给它命名为EF6RecipesContext,它与本书使用的上下文对象保持一致。

  另一个是,更改了表示生成存储逻辑模型和数据库脚本的架构名称为“Chaper2”。

  代码清单2-1演示了,我们创建和插入Person实体类型的实例,并将所有Person实体保存到数据库。

代码清单2-1. 从模型中插入和获取数据

 1       using (var context = new EF6RecipesContext()) { 2         var person = new Person { 3           FirstName = "Robert", 4           MiddleName = "Allen", 5           LastName = "Doe", 6           PhoneNumber = "867-5309" 7         }; 8         context.People.Add(person); 9         person = new Person {10           FirstName = "John",11           MiddleName = "K.",12           LastName = "Smith",13           PhoneNumber = "824-3031"14         };15         context.People.Add(person);16         person = new Person {17           FirstName = "Billy",18           MiddleName = "Albert",19           LastName = "Minor",20           PhoneNumber = "907-2212"21         };22         context.People.Add(person);23         person = new Person {24           FirstName = "Kathy",25           MiddleName = "Anne",26           LastName = "Ryan",27           PhoneNumber = "722-0038"28         };29         context.People.Add(person);30         context.SaveChanges();31       }32       using (var context = new EF6RecipesContext()) {33         foreach (var person in context.People) {34           System.Console.WriteLine("{0} {1} {2}, Phone: {3}",35             person.FirstName, person.MiddleName,36             person.LastName, person.PhoneNumber);37         }38       }

原标题:《Entity Framework 6 Recipes》翻译系列 3

关键词:ip

ip
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。