今天 vs2012 .net Framework 4.5 EntityFramework 5.0 三者共同发布了。
因持续关注EF,所以每天都会关注ADO.NET官方博客(http://blogs.msdn.com/b/adonet/ ). 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 Frist 以及通过 EF设计器来设计
2.Spatial 类型的支持。 这个类型一般在地里定位的时候用到的类型,例如数据库中存储 经度 或是 纬度的坐标即可以通过此类型进行存储。现在做地里位置开发的码农有福了。
同时支持Code Frist 以及通过 EF设计器来设计
3.Table-Valued Functions 函数的支持。
仅支持 DataBase First ,也就是仅仅只能通过设计器来实现支持。
例如:
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仅仅是在他之上进行了一些封装。
也就总结道这些吧,本人不太会写博客,很潦草,大家勉强看看吧。 有不对的请指出。
题外话:
其实我很好奇,EF5如果有什么Bug,微软要怎样应对版本的升级呢? 又要EF5.1 EF5.2 无线的....吗?这样讲5.0集成在.net framework 4.5中有什么意义。你不可能因为EF5.0的一个小bug重新发布.net framework吧?天呢?好像我不应该考虑。