DbContext 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
DbCoNtext 實例代表具有資料庫的會話,可用來查詢和儲存實體的實例。 DbCoNtext 是工作單位和存放庫模式的組合。
public class DbContext : IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>
public class DbContext : IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies, Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable, Microsoft.EntityFrameworkCore.Internal.IDbSetCache
public class DbContext : IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies, Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable, Microsoft.EntityFrameworkCore.Internal.IDbQueryCache, Microsoft.EntityFrameworkCore.Internal.IDbSetCache
public class DbContext : IAsyncDisposable, IDisposable, Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies, Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable, Microsoft.EntityFrameworkCore.Internal.IDbSetCache
type DbContext = class
interface IDisposable
interface IInfrastructure<IServiceProvider>
type DbContext = class
interface IDisposable
interface IInfrastructure<IServiceProvider>
interface IDbContextDependencies
interface IDbSetCache
interface IDbContextPoolable
type DbContext = class
interface IDisposable
interface IInfrastructure<IServiceProvider>
interface IDbContextDependencies
interface IDbSetCache
interface IDbQueryCache
interface IDbContextPoolable
type DbContext = class
interface IDisposable
interface IAsyncDisposable
interface IInfrastructure<IServiceProvider>
interface IDbContextDependencies
interface IDbSetCache
interface IDbContextPoolable
interface IResettableService
type DbContext = class
interface IInfrastructure<IServiceProvider>
interface IDbContextDependencies
interface IDbSetCache
interface IDbContextPoolable
interface IResettableService
interface IDisposable
interface IAsyncDisposable
Public Class DbContext
Implements IDisposable, IInfrastructure(Of IServiceProvider)
Public Class DbContext
Implements IDbContextDependencies, IDbContextPoolable, IDbSetCache, IDisposable, IInfrastructure(Of IServiceProvider)
Public Class DbContext
Implements IDbContextDependencies, IDbContextPoolable, IDbQueryCache, IDbSetCache, IDisposable, IInfrastructure(Of IServiceProvider)
Public Class DbContext
Implements IAsyncDisposable, IDbContextDependencies, IDbContextPoolable, IDbSetCache, IDisposable, IInfrastructure(Of IServiceProvider)
- 繼承
-
DbContext
- 實作
-
IInfrastructure<IServiceProvider> IDisposable Microsoft.EntityFrameworkCore.Internal.IDbContextDependencies Microsoft.EntityFrameworkCore.Internal.IDbContextPoolable Microsoft.EntityFrameworkCore.Internal.IDbSetCache Microsoft.EntityFrameworkCore.Internal.IDbQueryCache IResettableService IAsyncDisposable
備註
Entity Framework Core 不支援在相同的 DbCoNtext 實例上執行多個平行作業。 這包括平行執行非同步查詢,以及明確同時使用多個執行緒。 因此,請一律立即等候非同步呼叫,或針對平行執行的作業使用個別的 DbCoNtext 實例。 如需詳細資訊和範例,請參閱 避免 DbCoNtext 執行緒問題 。
您通常會建立衍生自 DbCoNtext 的類別,並包含 DbSet<TEntity> 模型中每個實體的屬性。 DbSet<TEntity>如果屬性具有公用 setter,則會在建立衍生內容的實例時自動初始化它們。
OnConfiguring(DbContextOptionsBuilder)覆寫 方法,以設定要用於內容的資料庫 (和其他選項) 。 或者,如果您想要在外部執行設定,而不是內嵌在內容中,您可以使用 DbContextOptionsBuilder<TContext> (或) ,在外部建立 (或 DbContextOptionsBuilderDbContextOptions) 的 DbContextOptions<TContext> 實例,並將它傳遞至 的 DbContext 基底建構函式。
透過在衍生內容的屬性中找到 DbSet<TEntity> 的實體類別執行一組慣例,以探索模型。 若要進一步設定依慣例探索的模型,您可以覆寫 OnModelCreating(ModelBuilder) 方法。
如需詳細資訊和範例,請參閱 DbCoNtext 存留期、設定和初始化、 使用 EF Core 查詢資料、 變更追蹤和 儲存資料 。
建構函式
DbContext() |
初始化 DbContext 類別的新執行個體。 OnConfiguring(DbContextOptionsBuilder)系統會呼叫 方法,以設定資料庫 (和其他選項,) 用於此內容。 |
DbContext(DbContextOptions) |
使用指定的選項, DbContext 初始化 類別的新實例。 OnConfiguring(DbContextOptionsBuilder)仍然會呼叫 方法,以允許進一步設定選項。 |
屬性
ChangeTracker |
提供存取此內容正在追蹤之實體實例的資訊和作業。 |
ContextId |
如果有的話,內容實例和集區租用的唯一識別碼。 |
Database |
提供此內容之資料庫相關資訊和作業的存取權。 |
Model |
實體形狀、實體之間的關聯性,以及它們對應至資料庫的中繼資料。 可能不會包含初始化資料庫所需的所有資訊。 |
方法
Add(Object) |
開始追蹤指定的實體,以及尚未追蹤的任何其他可連線實體, Added 處於狀態,以便在呼叫 時 SaveChanges() 插入資料庫。 |
Add<TEntity>(TEntity) |
開始追蹤指定的實體,以及尚未追蹤的任何其他可連線實體, Added 處於狀態,以便在呼叫 時 SaveChanges() 插入資料庫。 |
AddAsync(Object, CancellationToken) |
開始追蹤指定的實體,以及尚未追蹤的任何其他可連線實體, Added 處於狀態,以便在呼叫 時 SaveChanges() 插入資料庫。 |
AddAsync<TEntity>(TEntity, CancellationToken) |
開始追蹤指定的實體,以及尚未追蹤的任何其他可連線實體, Added 處於狀態,以便在呼叫 時 SaveChanges() 插入資料庫。 |
AddRange(IEnumerable<Object>) |
開始追蹤指定的實體,以及尚未追蹤的任何其他可連線實體, Added 處於狀態,以便在呼叫 時 SaveChanges() 插入資料庫。 |
AddRange(Object[]) |
開始追蹤指定的實體,以及尚未追蹤的任何其他可連線實體, Added 處於狀態,以便在呼叫 時 SaveChanges() 插入資料庫。 |
AddRangeAsync(IEnumerable<Object>, CancellationToken) |
開始追蹤指定的實體,以及尚未追蹤的任何其他可連線實體, Added 處於狀態,以便在呼叫 時 SaveChanges() 插入資料庫。 |
AddRangeAsync(Object[]) |
開始追蹤指定的實體,以及尚未追蹤的任何其他可連線實體, Added 處於狀態,以便在呼叫 時 SaveChanges() 插入資料庫。 |
Attach(Object) |
根據預設,會使用 Unchanged 狀態開始追蹤可從指定實體觸達的指定實體和專案,但如需使用不同狀態的情況,請參閱下方。 |
Attach<TEntity>(TEntity) |
根據預設,會使用 Unchanged 狀態開始追蹤可從指定實體觸達的指定實體和專案,但如需使用不同狀態的情況,請參閱下方。 |
AttachRange(IEnumerable<Object>) |
根據預設,會使用 Unchanged 狀態開始追蹤可從指定實體觸達的指定實體和專案,但如需使用不同狀態的情況,請參閱下方。 |
AttachRange(Object[]) |
根據預設,會使用 Unchanged 狀態開始追蹤可從指定實體觸達的指定實體和專案,但如需使用不同狀態的情況,請參閱下方。 |
ConfigureConventions(ModelConfigurationBuilder) |
覆寫這個方法,以在執行之前設定預設值和設定慣例。 這個方法會在 之前 OnModelCreating(ModelBuilder) 叫用。 |
Dispose() |
釋放此內容的已配置資源。 |
DisposeAsync() |
釋放此內容的已配置資源。 |
Entry(Object) |
EntityEntry取得指定實體的 。 專案可讓您存取實體的變更追蹤資訊和作業。 |
Entry<TEntity>(TEntity) |
EntityEntry<TEntity>取得指定實體的 。 專案可讓您存取實體的變更追蹤資訊和作業。 |
Find(Type, Object[]) |
尋找具有給定主索引鍵值的實體。 如果內容正在追蹤具有指定主鍵值的實體,則會立即傳回該實體,而不需要對資料庫提出要求。 否則,會針對具有指定主鍵值的實體對資料庫進行查詢,如果找到,則會附加至內容並傳回此實體。 如果找不到實體,則會傳回 null。 |
Find<TEntity>(Object[]) |
尋找具有給定主索引鍵值的實體。 如果內容正在追蹤具有指定主鍵值的實體,則會立即傳回該實體,而不需要對資料庫提出要求。 否則,會針對具有指定主鍵值的實體對資料庫進行查詢,如果找到,則會附加至內容並傳回此實體。 如果找不到實體,則會傳回 null。 |
FindAsync(Type, Object[], CancellationToken) |
尋找具有給定主索引鍵值的實體。 如果內容正在追蹤具有指定主鍵值的實體,則會立即傳回該實體,而不需要對資料庫提出要求。 否則,會針對具有指定主鍵值的實體對資料庫進行查詢,如果找到,則會附加至內容並傳回此實體。 如果找不到實體,則會傳回 null。 |
FindAsync(Type, Object[]) |
尋找具有給定主索引鍵值的實體。 如果內容正在追蹤具有指定主鍵值的實體,則會立即傳回該實體,而不需要對資料庫提出要求。 否則,會針對具有指定主鍵值的實體對資料庫進行查詢,如果找到,則會附加至內容並傳回此實體。 如果找不到實體,則會傳回 null。 |
FindAsync<TEntity>(Object[], CancellationToken) |
尋找具有給定主索引鍵值的實體。 如果內容正在追蹤具有指定主鍵值的實體,則會立即傳回該實體,而不需要對資料庫提出要求。 否則,會針對具有指定主鍵值的實體對資料庫進行查詢,如果找到,則會附加至內容並傳回此實體。 如果找不到實體,則會傳回 null。 |
FindAsync<TEntity>(Object[]) |
尋找具有給定主索引鍵值的實體。 如果內容正在追蹤具有指定主鍵值的實體,則會立即傳回該實體,而不需要對資料庫提出要求。 否則,會針對具有指定主鍵值的實體對資料庫進行查詢,如果找到,則會附加至內容並傳回此實體。 如果找不到實體,則會傳回 null。 |
FromExpression<TResult>(Expression<Func<IQueryable<TResult>>>) |
為指定的查詢運算式建立可查詢。 |
OnConfiguring(DbContextOptionsBuilder) |
覆寫這個方法,以設定資料庫 (和其他選項,) 用於此內容。 系統會針對所建立之內容的每個實例呼叫這個方法。 基底實作不會執行任何動作。 |
OnModelCreating(ModelBuilder) |
覆寫這個方法,以進一步設定從衍生內容屬性中 DbSet<TEntity> 公開之實體類型所探索的模型。 產生的模型可能會快取並重新用於衍生內容的後續實例。 |
Query<TQuery>() |
已淘汰.
DbSet<TEntity>建立 可用來查詢 實例的 |
Remove(Object) |
開始追蹤處於狀態的 Deleted 指定實體,以便呼叫 時 SaveChanges() 會從資料庫移除該實體。 |
Remove<TEntity>(TEntity) |
開始追蹤處於狀態的 Deleted 指定實體,以便呼叫 時 SaveChanges() 會從資料庫移除該實體。 |
RemoveRange(IEnumerable<Object>) |
開始追蹤處於狀態的 Deleted 指定實體,以便呼叫 時 SaveChanges() 會從資料庫移除該實體。 |
RemoveRange(Object[]) |
開始追蹤處於狀態的 Deleted 指定實體,以便呼叫 時 SaveChanges() 會從資料庫移除該實體。 |
SaveChanges() |
將此內容中所做的所有變更儲存至資料庫。 |
SaveChanges(Boolean) |
將此內容中所做的所有變更儲存至資料庫。 |
SaveChangesAsync(Boolean, CancellationToken) |
將此內容中所做的所有變更儲存至資料庫。 |
SaveChangesAsync(CancellationToken) |
將此內容中所做的所有變更儲存至資料庫。 |
Set<TEntity>() |
DbSet<TEntity>建立 可用來查詢及儲存 實例的 |
Set<TEntity>(String) |
建立共用類型實體類型的 , DbSet<TEntity> 可用來查詢和儲存 的 |
Update(Object) |
根據預設,會使用 Modified 狀態開始追蹤可從指定實體連線的指定實體和專案,但如需使用不同狀態的情況,請參閱下方。 |
Update<TEntity>(TEntity) |
根據預設,會使用 Modified 狀態開始追蹤可從指定實體連線的指定實體和專案,但如需使用不同狀態的情況,請參閱下方。 |
UpdateRange(IEnumerable<Object>) |
根據預設,會使用 Modified 狀態開始追蹤可從指定實體連線的指定實體和專案,但如需使用不同狀態的情況,請參閱下方。 |
UpdateRange(Object[]) |
根據預設,會使用 Modified 狀態開始追蹤可從指定實體連線的指定實體和專案,但如需使用不同狀態的情況,請參閱下方。 |
事件
SaveChangesFailed |
如果呼叫 SaveChanges 或 SaveChangesAsync 失敗且發生例外狀況,就會引發事件。 |
SavedChanges |
在呼叫 SaveChanges 或 結束時引發的事件 SaveChangesAsync |
SavingChanges |
在呼叫 SaveChanges 或 的開頭引發的事件 SaveChangesAsync |
明確介面實作
IDbContextDependencies.ChangeDetector |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不需任何通知。 您應該只在程式碼中直接使用它,並特別小心,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbContextDependencies.EntityFinderFactory |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不需任何通知。 您應該只在程式碼中直接使用它,並特別小心,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbContextDependencies.EntityFinderSource |
此 API 支援 Entity Framework Core 基礎結構,而且不適合直接從您的程式碼使用。 此 API 可能會在未來的版本中變更或移除。 |
IDbContextDependencies.EntityGraphAttacher |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不需任何通知。 您應該只在程式碼中直接使用它,並特別小心,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbContextDependencies.ExceptionDetector |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不需任何通知。 您應該只在程式碼中直接使用它,並特別小心,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbContextDependencies.InfrastructureLogger |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不需任何通知。 您應該只在程式碼中直接使用它,並特別小心,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbContextDependencies.QueryProvider |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不需任何通知。 您應該只在程式碼中直接使用它,並特別小心,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbContextDependencies.QuerySource |
此 API 支援 Entity Framework Core 基礎結構,而且不適合直接從您的程式碼使用。 此 API 可能會在未來的版本中變更或移除。 |
IDbContextDependencies.SetSource |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不需任何通知。 您應該只在程式碼中直接使用它,並特別小心,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbContextDependencies.StateManager |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不需任何通知。 您應該只在程式碼中直接使用它,並特別小心,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbContextDependencies.UpdateLogger |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不需任何通知。 您應該只在程式碼中直接使用它,並特別小心,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbContextPoolable.ClearLease() |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不需任何通知。 您應該只在程式碼中直接使用它,並特別小心,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbContextPoolable.ResetState() |
DbCoNtext 實例代表具有資料庫的會話,可用來查詢和儲存實體的實例。 DbCoNtext 是工作單位和存放庫模式的組合。 |
IDbContextPoolable.Resurrect(DbContextPoolConfigurationSnapshot) |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不需任何通知。 您應該只在程式碼中直接使用它,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbContextPoolable.SetLease(DbContextLease) |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不會有任何通知。 您應該只在程式碼中直接使用它,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbContextPoolable.SetLeaseAsync(DbContextLease, CancellationToken) |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不會有任何通知。 您應該只在程式碼中直接使用它,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbContextPoolable.SetPool(IDbContextPool) |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不會有任何通知。 您應該只在程式碼中直接使用它,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbContextPoolable.SnapshotConfiguration() |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不會有任何通知。 您應該只在程式碼中直接使用它,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbQueryCache.GetOrAddQuery(IDbQuerySource, Type) |
此 API 支援 Entity Framework Core 基礎結構,並不適合直接從您的程式碼使用。 此 API 可能會在未來的版本中變更或移除。 |
IDbSetCache.GetOrAddSet(IDbSetSource, String, Type) |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不會有任何通知。 您應該只在程式碼中直接使用它,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbSetCache.GetOrAddSet(IDbSetSource, Type) |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不會有任何通知。 您應該只在程式碼中直接使用它,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IDbSetCache.GetSets() |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不會有任何通知。 您應該只在程式碼中直接使用它,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IInfrastructure<IServiceProvider>.Instance |
取得用來解析服務的範圍 IServiceProvider 。 此屬性適用于需要利用公用 API 介面中未直接公開之服務的擴充方法。 |
IResettableService.ResetState() |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不需任何通知。 您應該只在程式碼中直接使用它,並特別小心,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
IResettableService.ResetStateAsync(CancellationToken) |
這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不需任何通知。 您應該只在程式碼中直接使用它,並特別小心,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。 |
擴充方法
GetInfrastructure<T>(IInfrastructure<T>) |
從使用 IInfrastructure<T> 隱藏的屬性取得值。 這個方法通常由資料庫提供者使用, (和其他延伸模組) 。 它通常不會用於應用程式程式碼中。 |
CreateProxy(DbContext, Type, Object[]) |
如果已啟用 Proxy 建立,則會為實體類型建立 Proxy 實例。 |
CreateProxy<TEntity>(DbContext, Action<TEntity>, Object[]) |
如果已啟用 Proxy 建立,則會為實體類型建立 Proxy 實例。 |
CreateProxy<TEntity>(DbContext, Object[]) |
如果已啟用 Proxy 建立,則會為實體類型建立 Proxy 實例。 |