Entity Framework(EF的Model First方法)

EntityFramework,是Microsoft的一款ORM(Object-Relation-Mapping)框架。同其它ORM(如,NHibernate,Hibernate)同样,html

一是为了使开发人员以操做对象的方式去操做关系型数据表。数据库

二是为了屏蔽底层不一样厂商的数据库,开发人员面向ORM框架编写数据的CRUD(Create,Retrieve,Update,Delete)操做,再由ORM框架将这些操做翻译成不一样数据库厂商的语言。服务器

从EF 4.X开始支持三种构建方法:1. Database First方法。2.Model First方法。3.Code First 方法。app

 

本次测试以Visual Studio2013 / MS Sql Server2012 / Entity Framework 6.X 测试EF 框架

Model First Demo (Models修改了,中间不能直接映射数据库)工具

【Model First 导航属性:不须要本身建立,是表之间有了关联以后,本身就会建立出来】性能

//注意:更新Model到数据库时会删除原来表格和数据,再建立新的表格学习

关键:关系的建立测试

1: 建立空模型的实体数据模型,spa

2: 建立实体、关系

3: 关系包括:1:1,1:n,m:n (建议不要使用1:1,性能低(不会延迟加载,添加时必须同时建立两个对象),能够使用1:m的方式进行代替处理)

  关系m:n,有一张中间表,左:1:m 关系,右:1:n 关系,在数据库中存在这张中间表,在edmx中不存在(能够使用导航属性操做m:n关系)

4: 能够生成导航属性,也能够不生成

1:打开SQLServer2012,使用下面SQL文本建立MyFirstModelFirstEF数据库(Model First EF不会帮咱们建立数据库,只会帮咱们建立表。因此咱们要事先把数据库创建好)

create database MyFirstModelFirstEF
on primary
(
    name='MyFirstModelFirstEF.mdf',
    --修改成本身电脑上SQL DB路径
    filename='D:\yangZ_MSSQL\MyFirstModelFirstEF.mdf',
    size=5mb,
    maxsize=100mb,
    filegrowth=10%
)
log on
(
    name='MyFirstModelFirstEF_log.ldf',
    --修改成本身电脑上SQL DB路径
    filename='D:\yangZ_MSSQL\MyFirstModelFirstEF_log.ldf',
    size=2mb,
    maxsize=100mb,
    filegrowth=5mb
)
go

2:新建ConsoleApplication应用程序

 

3:在EFDataBaseFirstDemo上 右键-->新建-->新建项-->数据-->ADO.NET实体数据模型,选择空模型,而后点击完成

4:此时会自动打开**.edmx设计界面(若没有打开,直接在项目解决方案中,双击**.edmx文件)

  

5:经过edmx设计界面, 咱们把上次Database First Demo中的CustomerInfo/OrderInfo表格生成出来,以下图所示,并导入数据库

6:在edmx设计页面,一种能够经过工具箱,拖拽设计页面,另一种直接右键-->新增来设计表格,本次直接经过右键-->新增来设计表格

6.1:设计CustomerInfo表格,在**.edmx设计界面空白处,直接右键-->新增-->实体,填写相关内容(在这里能够设置主键id为Identity,默认为自增加为1,这个在Model First设计界面没办法修改默认自增加值)

 

此时,选中id属性,鼠标右键-->属性(或者直接F4),能够打开属性界面,在属性界面能够继续修改刚刚建立的字段

6.2:继续新增customerName string类型/customerDate datetime类型

选中CustomerInfo设计界面,右键-->新增-->标量属性,修改name==customerName,选中刚刚新增的customerName字段,修改属性(F4)

关于MSSQL Server数据类型介绍参考:http://www.cnblogs.com/Dr-Hao/p/5197238.html

 

6.3:新增customerDate datetime类型字段,右键-->新增-->标量属性,修改name==customerDate,选中刚刚新增的customerDate字段,修改属性(F4)

关于MSSQL Server数据类型介绍参考:http://www.cnblogs.com/Dr-Hao/p/5197238.html

   

至此CustomerInfo数据库字段已经建立完毕,OrderInfo表格和字段(id[int],orderName[nvarchar(100)],customerId[int,foreign key])建立相似

6.4:把CustomerInfo和OrderInfo表格创建关联关系(在**.edmx空白处,右键单击-->新增-->关联)

 

最后总体**.edmx实体图显示以下:

 7:此时,数据库中没有数据表。咱们在edm设计器上空白地方,右键-->根据模型生成数据库

[Model First EF不会帮咱们建立数据库,只会帮咱们建立表。因此咱们要事先把数据库创建好]

点击下一步,以下图,生成对应的SQL文本

点击完成(有可能出现下面的警告),点击肯定以后,以下图所示:

当链接服务器成功之后,点击:执行脚本。则会在数据库MyFirstModelFirstEF中生成相应的数据表

    

最后ModelFirstEFDemo总体结构以下所示:

最后在ConsoleApplication中作一个增长数据的Demo

DbContext context = new Model1Container();

//使用导航属性 新增CustomerInfo和OrderInfo数据
CustomerInfo customer = new CustomerInfo()
{
    customerName = "ModelFirstTestOne",
    customerDate = DateTime.Now
};
customer.OrderInfo.Add(new OrderInfo()
{
    orderName = "ModelFirstTestTwo"
});
context.Set<CustomerInfo>().Add(customer);
context.SaveChanges();

此时数据库数据以下所示:

参考文章:

ASP.NET MVC EF直接更新数据(不需查询):http://www.cnblogs.com/Dr-Hao/p/5255630.html

ASP.NET EF(LINQ/Lambda查询):http://www.cnblogs.com/Dr-Hao/p/5356928.html

ASP.NET EF 使用LinqPad 快速学习Linq:http://www.cnblogs.com/Dr-Hao/p/5357112.html

 Ps:使用EF Model First时,若修改Model结构,或者字段,须要在**.edmx中作以下操做

重复第7步骤:此时,数据库中没有数据表。咱们在edm设计器上空白地方,右键-->根据模型生成数据库 [Model First EF不会帮咱们建立数据库,只会帮咱们建立表。因此咱们要事先把数据库创建好]

注意:更新Model到数据库时会删除原来表格和数据,再建立新的表格

即为:原来表格中的数据都会删除掉,而后从新建立新的表格(对于数据量比较大的表格,不能这样操做),能够经过【手动修改数据库和edmx文件】

相关文章
相关标签/搜索