首页 > 代码库 > EF总结--EF简介
EF总结--EF简介
EF全称Entity Framework,说到EF不得不提ORM。
ORM全称Object Relationship Mapping,广义地讲,就是面向对象的对象模型和关系数据库的数据结构之间的相互转换。通俗地解释,即表实体和表之间的相互转换。ORM体现的是一种思想,表实体的变化映射到表的变化。也就是说,你对实体进行增删改查引起的实体变化,会自动更新到数据库。
- 我们为什么需要ORM?
1.数据库的数据类型和程序中的数据类型不一致,如在数据库中是char,varchar,而在程序中用string。
2.软件开发过程中有时需要更换数据库。
在我们的机房收费系统中我们用了抽象工厂+反射+配置文件来应对更换数据库这种变化,当更换数据库时,我们需要修改配置文件,同时我们要再建一组D层的类,有原来的SQL……DAL.cs,变成诸如Oracle……DAL.cs,似乎还是很麻烦。
基于以上这种软件开发中面向对象的思想和关系数据库之间不一致的问题,有了ORM。
EF则是根据ORM思想,生产出的一款产品,EF是实现ORM思想的一种框架。
- EF原理
ObjectContext操纵数据库的上下文,它是我们操纵数据库的统一入口。
XML映射,我们可以直观地了解一下。
在生成好的实体数据模型处右击--打开方式--选择XML编辑器
在这里就描述了实体和表的映射关系:SSDL, CSDL 和C-SMapping,分别是对表,表实体和它们之间映射关系的描述。
总之概括地说一下EF的原理,即:通过对Context(上下文)执行增删改查操作,然后通过XML的映射关系生成数据库中的脚本,然后执行脚本,从而将变化更新到数据库。
现在,来解决一下通过EF如何应对数据库的变化:
只需要更改AppConfig文件中的ConnectionString配置节中的Provider,如果是SQL Server,则Provider是provider=System.Data.SqlClient。更换了Provider后,根据映射关系生成的脚本会自动变化。这样就不需要我们再新建一组用户访问其他数据库的D层的类了。
- EF与ADO.NET性能对比
ADO.NET是访问数据库的技术,通过下图,大家可以看一下二者的关系,我现在理解的是虽然EF很强大,智能,但是它也需要在一定程度上依赖于ADO.NET 。
以下的文章大家可以直观看一下二者在代码中和性能上的区别。
http://www.mybdqn.com/wsxt/7003/
EF总结--EF简介