- ORM框架
- 概念:ORM是对象关系映射模型为了解决面向对象与关系数据库互不匹配的现象技术。Orm框架是连接数据库的桥梁。
- 几种ORM:EF core,Dapper,SQLSugar,FreeSql等
- EF core与其他ORM的比较:
- EF core 是微软官方的ORM框架。
优点:功能强大,官方支持,生产效率高,力求屏蔽底层数据库差异;缺点:复杂,上手门槛高。
- Dapper:优点:简单,N分钟即可上手,行为可预期性强;缺点:生产效率低,需要处理底层数据库差异。
- EF Core 是模型驱动开发的思想,Dapper是数据库驱动的开发思想。
- EF core 而EF 比较
EF 有DB First,ModelFirst,Code First,EF Core不支持模型优先,推荐使用代码优先,遗留系统可以使用Scaffold-DbContext来生成代码实现类似DBFirst的效果,但是推荐使用Code First。
EF会对实体上的标注做校验,EF Core追求轻量化,不校验。
熟悉EF的话,比较容易操作EF Core,EF Core增加了很多的新东西。
EF 不在做新特性增加。
- 用什么数据库
EF core是对于底层ADO.NET Core的封装,因此ADO.NET Core支持的数据不一定被EF Core支持。
EF core支持所有主流的数据库,包括MS SQL Server,MySQL,PostgreSQL,SQlite等,可以实现Provider支持其他数据库。
对于SQLServer支持是最好的,MySQL,Postgresql也行。
- EF core环境的搭建
- 先建实体类
- 创建实现IEntityTypeConfiguration接口的实体配置类,配置实体类和数据库表的对应关系。
- 创建一个继承DbContext的类
UseSqlServer(数据库的连接字符串图中是连接一个叫demol的数据库)我这里使用的是SQL server数据库;
- 再在“程序包管理器控制台”中执行如下命令Add-Migration InitialCreate会自动在项目的Migrations文件夹中生成操作数据库的C#代码。(先添加Microsoft.EntityFrameworkCore.Tools依赖包)
Microsoft.EntityFrameworkCore.Tools可以执行的命令。
注意框架包的版本,我用的是.NET5的框架。
然后在视图--其他窗口—程序包管理器控制台,找到程序包管理器控制台输入Update-database。(就可以在数据库中的demol找到表了);
Migrations文件:面对对象的ORM开发中,数据库不是程序员手动创建的,而是由Migrations工具生成。