C# 資料操作系列 - 5. EF Core 入門
阿新 • • 發佈:2020-05-14
# 0.前言
上一章簡單介紹了一下ORM框架,並手寫了一個類似ORM的工具類。這一章將介紹一個在C#世界裡大名鼎鼎的ORM框架——Entity Framework的Core版。
Entity Framework 非Core版目前已經更新到了6代,這是一款經過檢驗的ORM框架。在這裡簡單介紹一下Entity Framework(簡稱EF,額,別拿這個當關鍵字搜尋,要不然你會被忽悠到一個英語培訓機構的)的優點。
C#的設計理念是約定優於配置,意思就是通過一定程度的規範性格式化的寫法來避免使用配置檔案或者配置程式碼等。而EF可以說是很好的詮釋了這個理念。
- EF可以在不使用任何配置的前提下,自動解析類與表之間的對映(具體的對映邏輯與我們手寫的ORM工具類一致或相近)。
- 自動跟蹤更改。在直接使用通過EF獲取的元素時,EF會自動跟蹤哪些欄位發生了變化,當手動呼叫儲存的時候,EF就會把資料回傳給資料庫。
- 可以延遲載入需要的資料,外來鍵引用屬性、查詢結果等
- 豐富的對映關係,支援一對一,一對多,多對多,甚至繼承、單表多例項等
- 可以使用Linq 進行查詢
- 非Core版的可以通過資料庫表生成實體類,兩種都可以通過實體類生成表
- 基於 ADO.NET 的資料庫連線和可用於連線到 SQL Server、Oracle、MySQL、SQLite、PostgreSQL、DB2 等
當然,還有一個特點:EF是約定優於配置,所以EF也可以配置。EF可以使用Fluent式配置,也可以使用配置檔案進行配置。
說了一大堆Entity Framework的優點,那麼就讓我們開始使用Entity Framework Core吧。
> 這裡簡單介紹一下選擇Core的原因,微乳這幾年一直在主推跨平臺戰略。因為EF更多的是基於.NET Framework開發的,所以微軟以EF為基礎針對.net core做了一定的修改,然後EF Core誕生了。可以說EF Core是專門為.net core開發的。而且.net core有更多更好的發展。
# 1. Entity Framework Core安裝
現在就讓我們一起來試著用一下EntityFramework Core吧。
先新建一個專案:
- Visual Studio
![image-20200514001534081](https://img2020.cnblogs.com/other/1266612/202005/1266612-20200514153727112-1048431580.png)
點下一步,選擇Console程式:
![image-20200514001603822](https://img2020.cnblogs.com/other/1266612/202005/1266612-20200514153727402-391658228.png)
點選建立
- Visual Studio Code
```bash
dotnet new console -o ef_demo
cd ef_demo
```
然後用VS Code開啟 ef_demo目錄。
然後選擇資料庫:
這次與之前的選擇不太一樣,這次選擇 SQLite這個資料庫。這是一個超小型的資料庫,可以不用安裝任何附加軟體,只要有一個檔案,然後通過程式碼就可以訪問了。
接下來,新增 EF的SQLite包:
在非Visual Studio環境下,安裝一個三方庫可以使用:
```bash
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
```
這個命令進行安裝。這是dotnet命令列安裝三方包的命令。對於Visual Studio或者Rider都可以通過圖形化的NuGet安裝三方包。
如果是使用NuGet的命令列介面進行安裝的話,可以通過:
```powershell
Install-Package Microsoft.EntityFrameworkCore.Sqlite
```
這行命令來安裝NuGet包。
# 2. 入門級使用方式
先建立兩個實體類:
```c#
public class ModelA
{
public int Id { get; set; }
public string Name { get; set; }
public List