A_01 entity framework core

ef core是什么?

  ef core 是微软推出的orm框架,功能强大,支持Linq及sql语句操作数据库,开发非常方便。

与其他orm框架对比

优点:ef core功能非常强大易用,开发非常快速,比如采用linq操作增、删、改、查,维护数据库的模型-表,数据一致性,数据迁移都非常方便;

缺点:与ado.net、dapper相比,性能会差些,但是95%应用场景都是在可靠的性能范围之内;

在数据库持久化操作上我的使用策略:采用ef core orm框架,如果是存在性能上面的问题,则在设计上及扩展上做处理,如果数据库的读写分离、合理利用索引、在特别耗性能的操作上,如果ef core无法保证,则扩展高性能的数据库持久化方式(如使用sql语句操作,ado.net,dapper)等。

ef core使用

常规使用流程:

1、引用 ef core相关nuget包;

2、定义/或数据库逆向生成模型,将模型作为属性定义在DbContext;

3、通过操作DbContext完成对数据库的操作;

我采用的是abp vnext框架,对ef core的使用参见一下截图:

 

 

 

 

ef core 功能点使用操作

Db First模型生成与 Code First迁移

安装需要的包(以SqlServer为例):

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.Design

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.SqlServer.Design

Microsoft.EntityFrameworkCore.Tools

DbFirst:

 生成:Scaffold-DbContext -Connection "Server=.;Database=WriteAspNetCoreDataBase;uid=sa;pwd=sa123" Microsoft.EntityFrameworkCore.SqlServer -OutputDir "Models"

加上一下命令可以在模型中生成与数据库关联映射的特性: -Force -DataAnnotations

Code First Migration:

context.Database.EnsureDeleted(); //删除数据库

context.Database.EnsureCreated(); //创建数据库和表

 

add-migration Init02

update-database

 

dotnet ef migrations add Init07

dotnet ef database update

方式选择:

我喜欢用Db First方式,在需求确认的了情况下,通过powerdesigner设计数据库,如此可以将数据库层设计的更加合理,更加适合于各种系统适配,而且相当于有了比较好的文档,有利于需求评审,需求分析时,后期维护、工作交接等工作。同时设计好了数据库,可以直击生成代码模型,不用投入什么时间维护模型与数据库表的关系一致性。而Code First 虽然感觉少了数据库的设计,只是设计模型,但是设计的时候可视化不高,设计出来的东西没那么合理,而且过于跟c# ef core藕合,不方便与其他技术栈和运维人员适配。

 

posted @ 2021-04-16 11:47  旭日阳光/hjw  阅读(109)  评论(0)    收藏  举报