2.1 DbContext
阿新 • • 發佈:2020-07-22
概念
DbContext類是Entity Framework Core的組成部分。 DbContext例項代表與資料庫的會話,可用於查詢實體例項並將其儲存到資料庫。 DbContext是工作單元和儲存庫模式的組合。
EF Core中的DbContext允許我們執行以下任務:
- 管理資料庫連線
- 配置模型和關係
- 查詢資料庫
- 將資料儲存到資料庫
- 配置變更跟蹤
- 快取
- 事務管理
要在我們的應用程式中使用DbContext,我們需要建立從DbContext派生的類,也稱為上下文類。該上下文類通常包括模型中每個實體的DbSet
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()方法允許我們使用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 | 返回有關實體的形狀,它們之間的關係以及它們如何對映到資料庫的元資料。 |