在项目中,不管是哪个子系统,底层框架用的都是一套东西,在对实体的操作一方面用的就是EF。
首先要问三个问题
第一,它是什么?
第二,为什么用?
第三,怎么用?
1.What is EF
EF(Entity Framework),is
an object-relational mapper that enables .NET developers to workwith relational data using domain-specific objects. Entity Framework allows youto create a model by writing code or using boxes and lines in the EFdesigner.Both of these approaches can be used
to targe an existing database orcreate a new database.
也就是说EF是通过跟踪实体的变化,根据映射关系以及实体的变化生成相应的SQL脚本,并执行到数据库中去。在使用过EF之后我们都知道,EF有三种模式,可以创建一个新的数据库,也可以使用原有的数据库。但最终都是在通过对实体的操作去操作数据库,也就是直接操作的对象是实体。这也就把对实体的变化映射到数据库表的变化了,这种思想正是ORM。那么什么是ORM呢?
如果别人问你一个问题,什么是ORM,也许你可以随口说出对象关系映射,英文:Object
Relational Mapping,简称ORM。下面我们用图来说明一切吧。
O就是对象
R就是数据库的关系,可以说关系数据库表
Mapping是一种映射,这种映射可以把对对象的操作映射到数据库表关系上。实现对象到关系数据库的映射。
而与我们的三层或者是熟悉的框架结合就是下面这样。在B层和U层,我们是面向对象的。当对象的信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。有了ORM之后,我们只需对对象中的实体操作即可。也可以说ORM是一个中间件,主要实现程序对象到关系数据库数据的映射。
2.Why useEF
在学习EF以前,一直的以前,当你开发一个应用程序的时候,可能会写不少数据访问层的代码,用来从数据库读取对象信息,增删改查的一些操作等。在DAL层中写了很多的方法来读取数据,改变对象状态的语句,而这些代码有太多的重复。例如,我们在机房中时,传入一个实体,要使用SQLCommand对象添加参数,所有属性要一一对应,设置CommandText属性的存储过程,然后运行SQLCommand。而每个对象都要重复写类似这样的代码,同理查询和更新。一个好的方法就是能有一个机制可以为你自动生成DAL,而你关系的重心落在对象身上就好。恰好EF就是体现这种思想的一种框架,这也就回答了开篇的第二个问题。
3.How touse it
既然EF是ORM的一种体现,而且我们也知道EF有三种模式,在项目中我们所使用的就是EF,队友说过一句话,EF其实不难,跟着敲一遍代码就懂了,我也说,再多的原理都不如自己动手做一遍,怎么使用在学习EF三种模式的时候会有所说明。
整篇文章似乎都是叙述什么是ORM,可能因为个人对ORM情有独钟吧,实在说EF,意在体现ORM思想。小编只是在想ORM这种思想很微妙,很前卫,把面向对象的思想用的淋漓尽致,通过一种映射关系,把所有的操作全部映射过去。这是一种进步,一个思想上的进步。以后的我们不再围绕着数据库绕圈,而是要围着实体转了。