1. 程式人生 > 實用技巧 >2.1 DbContext

2.1 DbContext

概念

DbContext類是Entity Framework Core的組成部分。 DbContext例項代表與資料庫的會話,可用於查詢實體例項並將其儲存到資料庫。 DbContext是工作單元和儲存庫模式的組合。
EF Core中的DbContext允許我們執行以下任務:

  • 管理資料庫連線
  • 配置模型和關係
  • 查詢資料庫
  • 將資料儲存到資料庫
  • 配置變更跟蹤
  • 快取
  • 事務管理

要在我們的應用程式中使用DbContext,我們需要建立從DbContext派生的類,也稱為上下文類。該上下文類通常包括模型中每個實體的DbSet 屬性。以下為EF Core中DbContext類的示例。

Copypublic class SchoolContext : DbContext
{
   public SchoolContext()
    {
    }

   protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
    }

   protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
    }
    //實體
    public DbSet<Student> Students { get; set; }
    public DbSet<Course> Courses { get; set; }
}

在上面的示例中,SchoolContext類派生自DbContext類,並且包含Student和Course型別的DbSet 屬性。它還將重寫OnConfiguring和OnModelCreating方法。我們必須建立SchoolContext例項以連線到資料庫並儲存或檢索學生或課程資料。
OnConfiguring()方法允許我們使用DbContextOptionsBuilder選擇和配置要與上下文一起使用的資料來源。在此處瞭解如何配置DbContext類。
OnModelCreating()方法允許我們使用ModelBuilder Fluent API配置模型。

DbContext方法

Method Usage
Add 將一個新實體新增到具有新增狀態的DbContext中,並開始對其進行跟蹤。呼叫SaveChanges()時,會將新的實體資料插入資料庫。
AddAsync 用於向狀態為“已新增”的DbContext新增新實體並開始對其進行跟蹤的非同步方法。呼叫SaveChangesAsync()時,會將新的實體資料插入資料庫。
AddRange 將具有新增狀態的新實體集合新增到DbContext並開始對其進行跟蹤。呼叫SaveChanges()時,會將新的實體資料插入資料庫。
AddRangeAsync 用於新增將儲存在SaveChangesAsync()上的新實體集合的非同步方法。
Attach 將新的或現有的實體附加到狀態不變的DbContext並開始跟蹤它。
AttachRange AttachRange將新實體或現有實體的集合以未更改的狀態附加到DbContext並開始對其進行跟蹤。
Entry 獲取給定實體的EntityEntry。該條目提供對實體的更改跟蹤資訊和操作的訪問。
Find 查詢具有給定主鍵值的實體。
FindAsync 用於查詢具有給定主鍵值的實體的非同步方法。
Remove 移除將刪除狀態設定為指定的實體,當呼叫SaveChanges()時,該實體將刪除資料。
RemoveRange 將Deleted狀態設定為一組實體,這些實體將在呼叫SaveChanges()時在一次資料庫往返中刪除資料。
SaveChanges 對狀態為“已新增”,“已修改”或“已刪除”的實體執行INSERT,UPDATE或DELETE命令到資料庫。
SaveChangesAsync SaveChanges()的非同步方法
Set Set建立一個DbSet ,可用於查詢和儲存TEntity的例項。
Update 附加狀態為“已修改”的斷開連線的實體,並開始對其進行跟蹤。呼叫SaveChagnes()時將儲存資料。
UpdateRange 附加狀態為“已修改”的斷開連線的實體的集合,並開始對其進行跟蹤。呼叫SaveChagnes()時將儲存資料。
OnConfiguring 重寫此方法,以配置要用於此上下文的資料庫(和其他選項)。建立的上下文的每個例項都會呼叫此方法。
OnModelCreating 重寫此方法,以進一步配置根據約定從派生上下文的DbSet 屬性中公開的實體型別發現的模型。

DbContext屬性

Model Usage
ChangeTracker 提供對該上下文正在跟蹤的實體例項的資訊和操作的訪問。
Database 提供對此上下文的資料庫相關資訊和操作的訪問。
Model 返回有關實體的形狀,它們之間的關係以及它們如何對映到資料庫的元資料。