什麼是 Entity Framework Core?
大部分非簡單式的 Web 應用程式都需要在資料上可靠地執行例如建立、讀取、更新和刪除 (CRUD) 作業。 其也需要在應用程式的重新啟動作業間保存由這些作業所變更的內容。 雖然 .NET 應用程式中有各種保存資料的選項,但 Entity Framework (EF) Core 是方便使用的解決方案,且非常適合許多 .NET 應用程式使用。
瞭解 EF Core
EF Core 是適用於 .NET 應用程式的輕量型、可延伸、開放原始碼和跨平台的資料存取技術。
EF Core 可作為物件關聯式的對應程式,其:
- 可讓 .NET 開發人員使用 .NET 物件來處理資料庫。
- 無須使用在一般情況下需要撰寫的大部分資料存取碼。
EF Core 支援大量的熱門資料庫,包括 SQLite、MySQL、PostgreSQL、Oracle 和 Microsoft SQL Server。
模型
搭配 EF Core 使用下,資料是透過使用模型的方式所執行。 模型是由實體類別和內容物件所組成,其內容物件代表具有資料庫的工作階段。 內容物件可讓您查詢和儲存資料。
實體類別
在此案例中,您會實作披薩商店的管理 API,因此會使用 Pizza 實體類別。 商店中的披薩會有名稱和描述。 其也需要識別碼,才能讓 API 和資料庫加以識別。 您在應用程式中使用的 Pizza 實體類別會識別披薩:
namespace PizzaStore.Models
{
public class Pizza
{
public int Id { get; set; }
public string? Name { get; set; }
public string? Description { get; set; }
}
}
內容類別
此應用程式僅具有一個實體類別,但大部分的應用程式具有多個實體類別。 內容類別負責查詢資料,並將其儲存至您的實體類別中,同時也負責建立和管理資料庫連線。
使用 EF Core 執行 CRUD 作業
設定 EF Core 之後,您可以將其用於執行實體類別上的 CRUD 作業。 然後,您可以針對 C# 類別進行開發,將資料庫作業委派給內容類別別。 資料庫提供者接著會將其轉譯為資料庫特定的查詢語言。 例如,關聯式資料庫的 SQL。 查詢一律會針對資料庫執行,即使結果中所傳回的實體已存在於內容。
查詢資料
內容物件會公開每個實體類型的集合類別。 在上述範例中,內容類別會將 Pizza 物件的集合公開為 Pizzas。 假設我們具有內容類別的執行個體,您便可針對所有披薩來查詢資料庫:
var pizzas = await db.Pizzas.ToListAsync();
插入資料
您可以使用相同的內容物件來插入新披薩:
await db.pizzas.AddAsync(
new Pizza { ID = 1, Name = "Pepperoni", Description = "The classic pepperoni pizza" });
刪除資料
您可輕鬆進行刪除作業。 其只需刪除項目的識別碼:
var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
//Handle error
}
db.pizzas.Remove(pizza);
更新資料
同樣地,您也可以更新現有的披薩:
int id = 1;
var updatepizza = new Pizza { Name = "Pineapple", Description = "Ummmm?" };
var pizza = await db.pizzas.FindAsync(id);
if (pizza is null)
{
//Handle error
}
pizza.Description = updatepizza.Description;
pizza.Name = updatepizza.Name;
await db.SaveChangesAsync();
使用 EF Core 記憶體內部資料庫
EF Core 包含記憶體內部資料庫提供者,可用來測試您的應用程式。 記憶體內部資料庫提供者適用於測試和開發作業,但不應該用於實際執行環境。 在下一個單元中,您將使用記憶體內部資料庫提供者來建立資料庫,並在其中執行 CRUD 作業。