天天看點

EF core 的一些了解

  • ORM架構
  1. 概念:ORM是對象關系映射模型為了解決面向對象與關系資料庫互不比對的現象技術。Orm架構是連接配接資料庫的橋梁。
  2. 幾種ORM:EF core,Dapper,SQLSugar,FreeSql等
  3. EF core與其他ORM的比較:
  1. EF core 是微軟官方的ORM架構。

優點:功能強大,官方支援,生産效率高,力求屏蔽底層資料庫差異;缺點:複雜,上手門檻高。

  1. Dapper:優點:簡單,N分鐘即可上手,行為可預期性強;缺點:生産效率低,需要處理底層資料庫差異。
  2. EF Core 是模型驅動開發的思想,Dapper是資料庫驅動的開發思想。
  1. 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環境的搭建
  1. 先建實體類
EF core 的一些了解
  1. 建立實作IEntityTypeConfiguration接口的實體配置類,配置實體類和資料庫表的對應關系。
EF core 的一些了解
  1. 建立一個繼承DbContext的類
EF core 的一些了解

UseSqlServer(資料庫的連接配接字元串圖中是連接配接一個叫demol的資料庫)我這裡使用的是SQL server資料庫;

  1. 再在“程式包管理器控制台”中執行如下指令Add-Migration InitialCreate會自動在項目的Migrations檔案夾中生成操作資料庫的C#代碼。(先添加Microsoft.EntityFrameworkCore.Tools依賴包)
  2. EF core 的一些了解
EF core 的一些了解
EF core 的一些了解

Microsoft.EntityFrameworkCore.Tools可以執行的指令。

注意架構包的版本,我用的是.NET5的架構。

然後在視圖--其他視窗—程式包管理器控制台,找到程式包管理器控制台輸入Update-database。(就可以在資料庫中的demol找到表了);

Migrations檔案:面對對象的ORM開發中,資料庫不是程式員手動建立的,而是由Migrations工具生成。