Entity Framework 5.0

时间:2024-09-27 19:03:02

今天 VS2012  .net Framework 4.5   Entity Framework 5.0  三者共同发布了。 ( EF5 Released )

在介绍新特性之前,先与大家回顾一下EF版本变化及一些重要变更:


 框架                          EF         备注 

.net Framework 3.5    EF 1.0

.net Framework 4.0    EF 4.0   EF4.0是集成在 net framework中的,而4.1~4.4仅仅是在其上的引入,并非框架的本身

.net Framework 4.0    EF 4.1   引入了DbContext以及POCO模型,应该算是很大改进

.net Framework 4.0    EF 4.2   修复了4.1的几个bug

.net Framework 4.0    EF 4.3   引入了Code First Migration.有了这个我们就不用通过丢弃数据库修改表结构了。

.net Framework 4.0    EF 4.4   修复了4.3的几个bug,这个也是刚不久发布,很少人用,但是支持.net framework 4.0

.net Framework 4.5    EF 5.0   最新版本 包括四个新特性,之后会主要介绍。

EF 6.0    未来版本,未发布  据官方博客称,将会脱离.net Framework单独存在


首先EF5.0的四个新特性的使用必须在.net framework 4.5下 ,相当的坑爹,就这样不支持.net  framework 4.0了,对于那些无法将服务器升级到.net framework 4.5(仅支持windows server 2008及以上)的产品项目微软并不在乎,无限坑爹啊!!!!

EF5.0带来了总共四个新特性:

1.Enum 类型的支持。

5.0带来的最优秀特性,Enum支持数据库对应类型有  byte  int16 int32  int64 SByte 5中数据库类型。

这样以后我们在开发的时候就无需再为了处理枚举做一些多余的封装了,真是大大减轻了开发者的代码量啊,很实质。

同时支持Code First  以及通过 EF设计器来设计

2.Spatial 类型的支持。  这个类型一般在地理定位的时候用到的类型,例如数据库中存储 经度 或是 纬度的坐标即可以通过此类型进行存储。现在做地理位置开发的码农有福了。

同时支持Code First  以及通过 EF设计器来设计

3.Table-Valued Functions  函数的支持。

仅支持 DataBase First ,也就是仅仅只能通过设计器来实现支持。

例如:

    var students = from s in context.GetStudentGradesForCourse(CourseID) 
                            where s.Grade >= Grade
                            select new
                            {
                                s.Person,
                                s.Course.Title

};

红色的部分就是我们在数据中写的创建的函数。 这个个人不经常使用,主要是因为用函数写一些逻辑会带来维护上的一些麻烦,成本很大。

4.编辑器各功能的加强。

可以在Context之间进行实体的拖拽,以及一些实体设计器颜色变化的控制等等。 快速开发的利器。主要因为我很少用设计器开发,所以也很少关注,大部分时间全花在CodeFrist上了,设计器这种简单操作反而不会了,无所谓了,反正不喜欢设计器。

5.其实第五个可以不认为是新特性,应该算是性能的提升,EF5较之前版本在性能上有很大的提升,主要原因是由于对Linq ot Entity 缓存的处理。第一次通过Linq to Entity 查询性能与之前版本几乎一样,但第二次及以后在进行同样查询就大大不一样了,由于缓存了之前的查询,大大减少了数据的查询时间。

再就是在EF5中,默认创建的Context是DbContext了,以前默认ObjectContext需要手动改。
从这点可以看出微软是十分推崇DbContext的,因为他的确为我们带来了许多方便,但是我们仍可以切换到ObjectContext,毕竟
OjbectContext还是有许多底层东西的,DbContext仅仅是在他之上进行了一些封装。