1. 程式人生 > >EF Core 二 、 入門 EF Core

EF Core 二 、 入門 EF Core

# 入門EF Core >我們將開始真正的EF之旅了,這裡使用SqlServer資料,然後DbFirst; 為嘛使用SqlServer,目前公司的整體業務全部在SqlSever,所以很多產品業務都是依託於這個,當然也在考慮做資料庫切換,切換EF Core就是開始,為後續做好準備,目前SqlServer的linux叢集部署太麻煩了,至少我是這樣認為的,而且很多客戶也都人格上排斥 .... 說多了都是淚 .... 然後就是DbFirst,公司是業務型公司,注重業務需求的設計,所以在需求開發之前,表結構的設計基本上都已經確定,基於現在的業務以及背景,可能DbFirst更加適合,當然Code First也不會丟掉的 ## 一、安裝 EF Core 新建類庫,用來引用 Microsoft.EntityFrameworkCore.SqlServer ![](https://img2020.cnblogs.com/blog/591768/202011/591768-20201120095755262-638711299.png) 如果在專案中有類似的第三方程式集引用,建議放入統一的程式集,這樣不用到處維護引用資訊;而且有利於後期解耦,其他業務相關的都依賴統一介面就可以,這樣具體的實現引用只是一個外掛而已; ## 二、生成資料表結構 為了做測試,這裡生成兩張表,TestTable,以及TestTableDetail,用來模擬主從表的場景;一步步來啊 ``` SQL CREATE TABLE [dbo].[TestTable](         [Id] [INT] NOT NULL,         [Name] [NVARCHAR](200) NOT NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] ``` ``` SQL CREATE TABLE [dbo].[TestTableDetail](         [Id] [INT] NOT NULL,         [PID] [INT] NOT NULL,         [Name] [NVARCHAR](200) NOT NULL, PRIMARY KEY CLUSTERED (         [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] ``` ## 三、建立實體物件 建立實體物件,用來與資料庫的物件進行匹配 ``` C#  [Table("TestTable")]     public class TestTable     {         [Key]         public int Id { get; set; }         public string Name { get; set; }     }      [Table("TestTableDetail")]     public class TestTableDetail     {         [Key]         public int Id { get; set; }         public int PID { get; set; }         public string Name { get; set; }     } ``` ## 四、建立DbContext上下文 ``` C#  ///     /// 自定義 資料上下文     ///     public class MyDbContext : DbContext     {         public DbSet