瞭解 EF Core

已完成

Entity Framework Core (EF Core) 是物件關聯式對應工具 (ORM)。 ORM 會在程式碼和資料庫中實作的定義域模型之間提供一層。 EF Core 是一種資料存取 API,可讓您使用 .NET 純舊 Common Runtime Language (CLR) 物件 (POCO) 與資料庫互動,和強型別語言整合式查詢 (LINQ) 語法。

在 EF Core 中,資料庫會在 .NET POCO 後面進行抽象化。 EF Core 處理與基礎資料庫的直接互動。 當您使用此 API 時,花費較少的時間將要求轉換至資料庫和從其中轉換要求,以及撰寫 SQL,以及更多時間專注於重要的商務邏輯。

使用 EF Core,您可以:

  • 將資料載入為 C# 物件 (實體)。
  • 在實體上呼叫方法來新增、修改和刪除資料。
  • 將多個資料庫資料表對應至單一 C# 實體。
  • 處理多個使用者同時嘗試更新相同記錄時所引起的並行問題。
  • 使用強型別 LINQ (System.Linq) 語法來查詢資料庫。
  • 存取多個資料庫,包括 SQL Server、SQLite、Azure Cosmos DB、PostgreSQL、MySQL 等等。
  • 從現有的資料庫建置您的領域模型。
  • 根據您的領域模型管理您的資料庫結構描述。
  • 使用單一方法呼叫,將變更認可至相關實體的複雜、深或寬物件圖。

檢閱 EF Core 架構

下圖描述 EF Core 的架構:

顯示 Entity Framework Core 架構中的元件和流程圖表。

DbCoNtext 是代表工作單位的特殊類別。 DbContext 提供您可使用的方法來設定選項、連接字串、記錄,以及用來將網域對應至資料庫的模型。

衍生自 DbContext 的類別:

  • 表示資料庫的使用中工作階段。
  • 儲存和查詢實體的執行個體。
  • 包含 DbSet<T> 類型的屬性,代表資料庫中的資料表。

EF Core 提供者會將物件圖形變更翻譯成 SQL。

資料庫提供者:

  • 是一種為特定資料庫引擎 (例如 SQL Server、Azure Cosmos DB 或 PostgreSQL) 設計的外掛程式程式庫。
  • 將方法呼叫和 LINQ 查詢轉換為資料庫的原生 SQL 方言。
  • 延伸 EF Core,以啟用資料庫引擎唯一的功能。

管理資料庫結構描述

EF Core 提供兩種主要方式來保持 EF Core 模型與資料庫結構描述同步:

  • 移轉 (模型即事實來源)
  • 反向工程 (資料庫即事實來源)

若要從這些選項中進行選擇,請決定 EF Core 模型還是資料庫結構描述為真實來源

移轉

在真實世界中,資料模型會在應用程式功能實作時變更。 新增和移除實體時,必須據以變更資料庫架構。 EF Core 移轉功能讓您能夠以累加方式來更新資料庫結構描述,讓它與應用程式的資料模型保持同步,同時將現有的資料保留在資料庫中。

引進資料模型變更時,開發人員會使用 EF Core 工具來新增對應的移轉。 EF Core 會將目前的模型與先前模型的快照集進行比較,以判斷差異。 產生實作變更的 C# 程式碼。 C# 檔案可以修改為自訂行為或種子資料。 與任何其他原始檔案一樣,這些檔案在專案的原始檔控制中進行追蹤。

產生新的移轉之後,就可以用各種方式將其套用到資料庫。 EF Core 會將所有套用的移轉記錄在特殊歷程記錄表中。 歷程記錄表會保留已套用哪些移轉的記錄。

反向工程

反向工程是對實體模型類別和以資料庫結構描述為基礎的 DbContext 類別進行 Scaffolding 的流程。 此方法通常與資料庫管理員所管理的現有或共用資料庫搭配使用。

在下一個單元中,您將使用移轉開始使用 EF Core。

檢定您的知識

1.

哪個類別提供一組基本作業,您可以用來設定您的資料庫以及與其互動?