EF--实质上使用ADO.NET
EF--实质上使用ADO.NET
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进行了一个更高层次的封装。
.NET应用程序访问数据库的方式
1.手写代码通过ADO.NET类库
2,DataSet结合DataAdapter结合
3,ORM
ORM解决方案:
Linq to sql
EF:数据库的ER模型可以完全转换成对象模型
EF体系结构
1, Data Providers:数据库的相关操作
2, EDM:概念层和逻辑层的映射,应用程序构建在该层之上
3, 其他层:如何操作EDM
接下来,我们来看下EDM的概念
EDM(Entity Data Model):实体数据模型
能将我们对数据对象的操作为对数据库的操作。
在EF中,我们对数据对象的操作,实际上是在操作EDM,
EDM会将对数据对象的操作发送到数据库。
EDM三层:
CSDL(概念层)
定义对象模型,以面向对象的方式访问数据,可以简单理解为实体类
MSL(对应层)
负责上层的概念层结构与下层的存储结构之间的映射
SSDL(存储层)
负责与数据库管理系统中的数据表做实体对应
EF图解:
当我们通过应用程序对数据库执行CRUD时,通过EF方式,实际上是对ObjectContext的操作,ObjectContext相当于EF的入口,ObjectContext拿到对应的消息(CRUD)后,通过ORM中的Mapping来将对象O映射成数据库中的关系R。我们通过一个截图来看下Mapping中存储的内容。
然后我们就来通过CodeFirst的方式实现对数据库的增删改查操作。
SqlServerConnection--基于ado.net
using System.Collections.Concurrent;
using Microsoft.Data.SqlClient;
EFCORE 生成sql
SqlServerDatabaseCreator--Command
RelationalDatabaseCreatorDependencies
Mysql--写法与EF内置的sqlserver完全相同
结构与EFCORE中内含的sqlserver完全相同。
MySQLServerConnection
MySQLDatabaseCreator--Command