一、什么是EF?
实体架构(Entity Framework)是微软以来ADO.Net为基础开发出来的对象关系映射(ORM)解决方案,它解决了对象持久化问题,将程序员从编写麻烦的SQL语句中解放出来。
优点:
支持多种数据库(Microsoft SQL Server、Oracle和DB2等);
强劲的映射引擎,能很好地支持存储过程;
提供Visual Studio集成工具,进行可视化操作;
能够与ASP.NET、WPF、WCF、WCF Data Services进行很好的集成。
二、ORM
常见ORM框架:
ORM不是产品,是框架的总称,面向对象的程序设计语言到关系数据库的映射。
使程序员既可以利用面向对象语言的简单易用性,又可以利用关系数据库的技术优势来实现应用程序的增删改查操作。
1. NHibernate:Hibernate在.NET平台下的版本
2. iBatis.NET:iBatis在.NET平台的实现
3.Linq to SQL(微软不再更新):.NET针对SQL server的ORM框架
4.ADO.NET Entity Framework:微软在.NET4.0推出的领域驱动开发模型。
注意:ADO.NET Entity Framework是微软以ADO.NET为基础所发展出来的对象关系映射解决方案,只不过是对ADO.NET进行了一个更高层次的封装。
产生背景:
1、重复的操作数据库代码
我们使用三层架构时,使用的是ADO.NET访问数据库,我们将ADO.NET对数据库的操作封装在一个SQLHelper中,然后通过D层调用SQLHelper实现对数据库的操作。即使使用SQLHelper进行封装,我们的数据访问层(DAL),还是要针对不同的业务重复很多增、删、改、查操作。只是因为操作的表不同,我们就去重复这些增删改查操作,那么有没有什么工具可以自动生成这些语句?
2、影响扩展性和灵活性
数据访问层同时与域模型和关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,都要修改数据库访问层的相关程序代码,增加了软件的维护难度。
定义:
ORM全称:(Object-Relation Mapping)即对象-关系映射。ORM是将关系数据库中的业务数据用对象的形式表现出来,并通过面向对象的方式将这些对象组织起来,实现系统业务逻辑的过程。
ORM解决的主要问题是对象关系映射。一般情况,实体与我们库中的表的对应关系,一个实体就好比表中的一行数据,将实体的操作视为对表的操作,通过ORM模型对我们的代码更加简洁,我们将对数据库的操作通过ORM转换后执行,ORM模型确实为我们的开发提高了效率。
结构:
通过该图,可以看出,
O对应程序中的类Customer,就是对象,
R含义为Relation,对应数据当中的关系表
M表示程序中对象和数据库中关系表的映射关系(Mapping实际上是一个XML文件)
当我们通过应用程序对数据库执行CRUD时,通过EF方式,实际上是对ObjectContext的操作,ObjectContext相当于EF的入口,ObjectContext拿到对应的消息(CRUD)后,通过ORM中的Mapping来将对象O映射成数据库中的关系R。我们通过一个截图来看下Mapping中存储的内容。
对象关系映射
数据库中有用户表、工作表
第一步:系统向数据库中插入一条信息,这时内存中有User对象
第二步:对象和数据库怎样通信,即怎样将对象放到数据库
需要XML配置文件进行配置,保存映射关系
第三步:需要映射关系,使用Relation(映射到表中每个字段),最后可生成完整的SQL语句
Object:代表系统中对应的表
Table:代表数据库中的表,其中包含表中的各个字段
注意:ORM框架采用元数据来描述对象一关系映射细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中。只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中。
在系统中的体现:
SSDL:数据库(数据表)
CSDL:C#(类)
C-S:类和表的映射关系
————————————————
原文链接:https://blog.csdn.net/gxq741718618/article/details/41879617