Entity Framework Core
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 = db.Blogs
.Where(b => b.Rating > 3)
.OrderBy(b => b.Url)
.ToList();
}
儲存資料
使用您實體類別的執行個體,建立、刪除和修改資料庫中的資料。 若要深入了解,請參閱儲存資料。
using (var db = new BloggingContext())
{
var blog = new Blog { Url = "http://sample.com" };
db.Blogs.Add(blog);
db.SaveChanges();
}
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 使用者入門。