Entity Framework(EF的Database First方法)
EntityFramework,是Microsoft的一款ORM(Object-Relation-Mapping)框架。同其它ORM(如,NHibernate,Hibernate)一样,
一是为了使开发人员以操作对象的方式去操作关系型数据表。
二是为了屏蔽底层不同厂商的数据库,开发人员面向ORM框架编写数据的CRUD(Create,Retrieve,Update,Delete)操作,再由ORM框架将这些操作翻译成不同数据库厂商的语言。
从EF 4.X开始支持三种构建方法:1. Database First方法。2.Model First方法。3.Code First 方法。
本次测试以Visual Studio2013 / MS Sql Server2012 / Entity Framework 6.X 测试EF
Database First Demo
1:打开SQLServer2012,使用下面SQL文本创建MyFirstEF数据库及CustomerInfo/OrderInfo表格
create database MyFirstEF on primary ( name='MyFirstEF.mdf', --修改为自己电脑上SQL DB路径 filename='D:\yangZ_MSSQL\MyFirstEF.mdf', size=5mb, maxsize=100mb, filegrowth=10% ) log on ( name='MyFirstEF_log.ldf', --修改为自己电脑上SQL DB路径 filename='D:\yangZ_MSSQL\MyFirstEF_log.ldf', size=2mb, maxsize=100mb, filegrowth=5mb ) go use MyFirstEF go create table CustomerInfo ( id int identity(1,1) primary key, customerName nvarchar(100) not null, customerDate datetime ) go create table OrderInfo ( id int identity(1,1) primary key, orderName nvarchar(100), customerId int ) go alter table OrderInfo add constraint FK_OrderInfo_CustomerInfo foreign key(customerId) references CustomerInfo(id) go insert into CustomerInfo select 'aa',GETDATE() union all select 'bb',GETDATE() union all select 'cc',GETDATE() union all select 'dd',GETDATE() go insert into OrderInfo select 'bike1',2 union all select 'bike2',2 union all select 'car1',3 union all select 'car2',3 union all select 'chezi1',4 union all select 'chezi2',4 go select * from CustomerInfo go select * from OrderInfo go
2:新建ConsoleApplication应用程序
3:在EFDataBaseFirstDemo上 右键-->新建-->新建项-->数据-->ADO.NET实体数据模型,选择从数据库生成(Database First)
选择数据库,用户名,密码等,这和普通的链接数据库操作一样,最后生成的配置文件会保存在App.config文件中
点击下一步,选择数据库表格,这里我们选择CustomerInfo 和OrderInfo表格,勾选[确定所生成对象名称的单复数形式][在模型中包含外键列]
模型命名空间可以修改为自己需要的,这里我使用默认的模型命名空间
点击完成,可能会出现以下警告,直接点击[确定],生成的EF实体图本质是xml
EF实体图,这时候记得点击保存按钮(Ctrl+S),保存生成的EF实体图
最后整个项目源码结构如下图所示:
最后在ConsoleApplication中做一个简单的查询Demo
DbContext context = new MyFirstEFEntities(); var rows = context.Set<CustomerInfo>().Select(c => c.customerName); foreach (var row in rows) { Console.WriteLine(row); } Console.WriteLine("Database First Finish"); Console.ReadKey();
PS:使用EF Database First时,若修改数据库表结构,或者字段,需要在**.edmx中做如下操作,然后点击保存