Entity Framework (EF) Core 是常見 Entity Framework 資料存取技術的輕量型、可擴充、開放原始碼且跨平台版本。
EF Core 可作為物件關聯對應器 (O/RM),其:
- 可讓 .NET 開發人員使用 .NET 物件來處理資料庫。
- 無須使用在一般情況下需要撰寫的大部分資料存取碼。
EF Core 支援許多資料庫引擎,如需詳細資料,請參閱資料庫提供者。
模型
運用 EF Core,使用模型來執行資料存取。 模型由實體類別和上下文物件所組成,該上下文物件表示與資料庫的工作階段。 內容物件可讓您查詢和儲存資料。 如需詳細資訊,請參閱建立模型。
EF 支援下列模型開發方法:
- 從現有的資料庫產生模型。
- 手動撰寫符合資料庫的模型。
- 建立模型之後,使用 EF 移轉從模型建立資料庫。 移轉允許資料庫隨著模型變更而發展。
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
namespace Intro;
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(
@"Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;ConnectRetryCount=0");
}
}
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
public int Rating { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
查詢
使用 Language Integrated Query (LINQ) 從資料庫中擷取實體類別執行個體。 如需詳細資訊,請參閱查詢資料。
using (var db = new BloggingContext())
{
var blogs = await db.Blogs
.Where(b => b.Rating > 3)
.OrderBy(b => b.Url)
.ToListAsync();
}
儲存資料
使用您的實體類別的執行個體,在資料庫中創建、刪除和修改資料。 若要深入了解,請參閱儲存資料。
using (var db = new BloggingContext())
{
var blog = new Blog { Url = "http://sample.com" };
db.Blogs.Add(blog);
await db.SaveChangesAsync();
}
EF O/RM 考量因素
雖然 EF Core 很適合摘要說明許多程式設計的詳細資料,但有一些適用於所有 O/RM 的最佳做法,可協助避免生產應用程式中常見的錯誤:
- 具備底層資料庫伺服器的中級或更高知識,對於在高效能生產應用程式中進行架構設計、偵錯、性能分析及資料移轉至關重要。 例如,主索引鍵和外部索引鍵、條件約束、索引、正規化、DML 和 DDL 陳述式、資料類型、分析等等的知識。
- 功能與整合測試:請務必盡可能貼近仿真生產環境,以:
- 在應用程式中尋找只有在使用特定版本或版本類型的資料庫伺服器時才會顯示的問題。
- 在升級 EF Core 和其他相依性時偵測重大變更。 例如,新增或升級架構,例如 ASP.NET Core、OData 或 AutoMapper。 這些相依性會以非預期的方式影響 EF Core。
- 進行具有代表性負載的效能和壓力測試。 某些功能的不夠成熟的使用無法具備良好的擴展性。 例如,多個集合中包含的大量使用延遲載入、對非索引資料行的條件查詢、存放產生值的大量更新和插入,缺乏並行處理,大型模型,及快取策略不足。
- 安全性檢閱:例如,處理連接字串和其他祕密、非部署作業的資料庫權限、原始 SQL 的輸入驗證、加密敏感性資料。 如需安全設定和驗證流程,請參閱 安全驗證流程 。
- 請確定有足夠可用的記錄和診斷。 例如,適當的記錄設定、查詢標籤和 Application Insights。
- 錯誤復原。 準備常見失敗案例的應變措施,例如版本復原、後援伺服器、擴增與負載平衡、DoS 風險降低以及資料備份。
- 應用程式部署和移轉。 在部署期間計劃詳細如何套用資料遷移;若在應用程式啟動時執行,可能會發生並行性問題,需要超過正常操作所需的更高權限。 使用預備階段協助在遷移期間從嚴重錯誤中復原。 如需詳細資訊,請參閱應用遷移。
- 詳細檢查與測試所產生的移轉。 移轉應該先經過完全測試,再套用至生產資料。 一旦資料表包含生產資料,結構描述圖形和資料行類型就無法輕易變更。 例如,在 SQL Server 上,
nvarchar(max)和decimal(18, 2)通常不是對應至字串和十進位屬性的最佳資料類型,但這些卻是 EF 使用的預設選擇,因為它對您的特定情境沒有足夠的理解。
下一步
如需入門教學,請參閱 Entity Framework Core 使用者入門。