一级在开始测试的时候就遇到了一个大难题:Entity Framework的版本兼容问题!咱们学校五楼机房的电脑版本都是非常低的,它的Entity Framework的版本为3.5,而我们编程的时候用的版本是4.5的!根据高版本不能兼容低版本,所以我们的系统在5楼电脑上根本就不能运行! 那么到底什么是Entity Framework呢?
百度百科:
Entity Framework 利用了抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (entity),而数据字段都转换为属性 (property),关系则转换为结合属性 (association),让数据库的 E/R 模型完全的转成对象模型。方便了设计师对数据库的操作。
我认为:
Entity Framework就是集成在VS中的,方便用户操作数据库的一种对象关系对应解决方案。Entity Framework4.1之前EF支持“Database First”和“Model First”编程方式,从EF4.1开始EF开始支持支持“Code First”编程方式,下面来了解一下这三种编程方式。
Database First:
这种模式我们称之为“数据库优先”。在一级中就是用的这种,直接利用数据库生成实体模型,具体如下:
先新建生成类库,名称为Model:
右击Modle,新建项:
按照提示一步一步的做,最好数据库中的表中都有主键,这样不容易出错!
这只是建立了模型,建好以后如果你的数据库表结构发生改变后,只需在模型设计视图空白处右键,选择“从数据库更新模型”接着按照向导操作即可。接下来就需要用EF进行数据查询,对数据库中的数据进行操作,这里有一个例子可以参考:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace DatabaseFirst
{
class Program
{
static void Main(string[] args)
{
using (var db = new AdventureWorksEntities())
{
IQueryable<Person> persons = from people in db.People
where people.LastName == "Sánchez"
select people;
foreach (Person p in persons)
{
Console.WriteLine("first name is :{0}", p.FirstName);
if (p.FirstName == "Angela")
{
p.AdditionalContactInfo = "other info";
}
}
var persons2 = from people in db.People
where people.LastName == "Sánchez" && people.FirstName == "Angela"
select people;
if (persons2.Count() > 0)
{
Console.WriteLine("additional contact information is :{0}", persons2.First().AdditionalContactInfo);
}
//上面虽然可以查出来AddtionalContactInfo,但是实际省并未保存到数据库,具体保存方法在此不再详细描述
}
}
}
}
Model First:
这种模型我们称之为“模型优先”,在这种情况下,我们还没有设计相关的数据库,在vs中我们通过设计对应的数据模型来生成数据库和数据类。
步骤如下:
右击Model类库,新建ADO.NET实体数据库模型:
在弹出框中填入你需要的实体名称,类型等信息:
还可以添加二者之间的关系,
“Order”和“OrderDetail”是一对多的关系,“Order”可以通过“OrderDetails”属性访问“OrderDetail”实体,“OrderDetail”可以通过“Order”属性访问“Order”实体,并且添加了一个外键约束到“OrderDetail”中。
然后在空白处选择“从模型生成到数据库.....”
点击完成就会生成数据库脚本,放到数据库执行以下就可以生成数据库表。
Code First:
这种模式我们称之为“代码优先”模式,是从EF4.1开始加入的新功能,这种方法我自己也没有用过,所以只是给大家提供以下思路,具体的执行大家可以实践一下!具体的见链接:http://www.360doc.com/content/14/0327/09/5054188_364065885.shtml
知识总结,梳理,希望可以帮到大家!