最近接触了Entity Framework, 趁热写一个学习笔记,总结一下这几天的心得。
沿用习惯的问题引导思路,第一个问题:为什么要使用Entity Framework(以下简称EF)?EF是MS在.net 3.5中引入的,虽然在3.5中显得不伦不类,不过在4.0中得到了进一步完善,展示出了其强大地功能。
经常参与数据库相关开发的人都知道,在程序的开发进程中,数据库的变动的应用程序的变动都是一件开销巨大地事情,为了减少因为数据库迁移和业务逻辑变动的开销,一个很自然的想法就是用一个中间层将这两方面的变动隔离,将两部分需要改动的地方用一个文件集中起来,这样由于一方变动而引起的另一方开销将全部集中于一个有限的范围。hibernat即是基于这一理念,而EM也是这一理念的产物。EM由三部分组成,对应于对象模型的conceptual model,对应于关系模型的storage model,以及两个model之间的映射。针对这两个部分,分别衍生出了,model-first, data-base first和code-first三种方法,有人说code-first方法最佳,这其实是站在程序员的角度,究竟用哪一种方法应该取决于具体情况,取决于数据库和业务逻辑相对静态的一方。
引入EM的好处是显而易见的,它使得程序员用OO的方式操作数据库,而不是重复一大堆的connection,使用conceptualmodel使得代码的可维护性也提高了,再也不用去一大堆字符串中寻找错误。只要生成了model,操作数据库是一件很简单的事情。
例如,从northwind数据库查找UnitPrice。
using (NorthwindEntities northwindContext = new NorthwindEntities())
{
var priceQuery = from p in northwindContext.Products where p.CategoryID == selectCategory select p.UnitPrice;
}
可以结合Linq简化代码,使用拉姆达表达式替换where子句。
这些特性都使得EM能够大幅度地提高开发效率。