EF Core 二 、 入門 EF Core
阿新 • • 發佈:2020-11-20
# 入門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