DatabaseFacade 類別

定義

提供內容之資料庫相關資訊和作業的存取權。 這個類別的實例通常是從 Database 取得的,而且不是設計成直接在應用程式程式碼中建構。

public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>
public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Internal.IDatabaseFacadeDependenciesAccessor
public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Storage.IDatabaseFacadeDependenciesAccessor
public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Infrastructure.IResettableService, Microsoft.EntityFrameworkCore.Storage.IDatabaseFacadeDependenciesAccessor
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
    interface IDatabaseFacadeDependenciesAccessor
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
    interface IDatabaseFacadeDependenciesAccessor
    interface IResettableService
Public Class DatabaseFacade
Implements IInfrastructure(Of IServiceProvider)
Public Class DatabaseFacade
Implements IDatabaseFacadeDependenciesAccessor, IInfrastructure(Of IServiceProvider)
Public Class DatabaseFacade
Implements IDatabaseFacadeDependenciesAccessor, IInfrastructure(Of IServiceProvider), IResettableService
繼承
DatabaseFacade
實作
IInfrastructure<IServiceProvider> Microsoft.EntityFrameworkCore.Internal.IDatabaseFacadeDependenciesAccessor IDatabaseFacadeDependenciesAccessor IResettableService

建構函式

DatabaseFacade(DbContext)

初始化 DatabaseFacade 類別的新執行個體。 這個類別的實例通常是從 Database 中取得,而且不是設計成直接在應用程式程式碼中建構。

屬性

AutoSavepointsEnabled

如果在以 手動方式啟動 BeginTransaction() 交易之後呼叫交易,是否會自動 SaveChanges() 建立交易儲存點。

AutoTransactionBehavior

取得或設定值,指出如果未呼叫 'BeginTransaction' 或 'UseTransaction',是否會自動 SaveChanges() 建立交易。

AutoTransactionsEnabled
已過時。.
已過時。.

取得或設定值,指出如果未呼叫 'BeginTransaction' 或 'UseTransaction' 方法,是否會自動 SaveChanges() 建立交易。

CurrentTransaction

取得內容所使用的目前 IDbContextTransaction ,如果沒有使用任何交易,則為 null。

ProviderName

傳回目前使用中的資料庫提供者名稱。 名稱通常是提供者元件的名稱。 使用 sugar 方法通常比較容易,例如 Microsoft.EntityFrameworkCore.SqlServerDatabaseFacadeExtensions.IsSqlServer ,而不是直接呼叫此方法。

方法

BeginTransaction()

啟動新的交易。

BeginTransactionAsync(CancellationToken)

以非同步方式啟動新的交易。

CanConnect()

判斷資料庫是否可用且可連線。

CanConnectAsync(CancellationToken)

判斷資料庫是否可用且可連線。

CommitTransaction()

將目前交易中的未完成作業套用至資料庫。

CommitTransactionAsync(CancellationToken)

將目前交易中的未完成作業套用至資料庫。

CreateExecutionStrategy()

建立已設定 IExecutionStrategy 的 實例。

EnsureCreated()

確定內容的資料庫存在。

EnsureCreatedAsync(CancellationToken)

確定內容的資料庫存在。

EnsureDeleted()

確定內容的資料庫不存在。 如果不存在,則不會採取任何動作。 如果存在,則會刪除資料庫。

警告:刪除整個資料庫,而且不努力只移除模型用於此內容的資料庫物件。

EnsureDeletedAsync(CancellationToken)

以非同步方式確保內容的資料庫不存在。 如果不存在,則不會採取任何動作。 如果存在,則會刪除資料庫。

警告:刪除整個資料庫,而且不努力只移除模型用於此內容的資料庫物件。

RollbackTransaction()

捨棄目前交易中的未完成作業。

RollbackTransactionAsync(CancellationToken)

捨棄目前交易中的未完成作業。

明確介面實作

IDatabaseFacadeDependenciesAccessor.Context

這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不會有任何通知。 您應該只在程式碼中直接使用它,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。

IDatabaseFacadeDependenciesAccessor.Dependencies

這是支援 Entity Framework Core 基礎結構的內部 API,不受與公用 API 相同的相容性標準。 它可能會在任何版本中變更或移除,而不會有任何通知。 您應該只在程式碼中直接使用它,並知道這麼做可能會導致應用程式在更新至新的 Entity Framework Core 版本時失敗。

IInfrastructure<IServiceProvider>.Instance

取得用來解析服務的範圍 IServiceProvider

此屬性適用于需要利用公用 API 介面中未直接公開之服務的擴充方法。

IResettableService.ResetState()

重設服務,使其可從集區使用。

IResettableService.ResetStateAsync(CancellationToken)

提供內容之資料庫相關資訊和作業的存取權。 這個類別的實例通常是從 Database 取得的,而且不是設計成直接在應用程式程式碼中建構。

擴充方法

GetCosmosClient(DatabaseFacade)

取得這個 DbContext 的基礎 CosmosClient

GetCosmosDatabaseId(DatabaseFacade)

取得這個 DbContext 的已設定資料庫名稱。

IsCosmos(DatabaseFacade)

true如果目前使用中的資料庫提供者是 Cosmos 提供者,則傳回 。

GetInfrastructure<T>(IInfrastructure<T>)

從使用 IInfrastructure<T> 隱藏的屬性取得值。

這個方法通常由資料庫提供者使用, (和其他延伸模組) 。 它通常不會用於應用程式程式碼中。

IsInMemory(DatabaseFacade)

true如果目前使用中的資料庫提供者是記憶體內部提供者,則傳回 。

BeginTransaction(DatabaseFacade, IsolationLevel)

使用指定的 IsolationLevel 啟動新的交易。

BeginTransactionAsync(DatabaseFacade, IsolationLevel, CancellationToken)

以非同步方式啟動具有指定 IsolationLevel 的新交易。

CloseConnection(DatabaseFacade)

關閉基礎 DbConnection

CloseConnectionAsync(DatabaseFacade)

關閉基礎 DbConnection

ExecuteSql(DatabaseFacade, FormattableString)

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

ExecuteSqlAsync(DatabaseFacade, FormattableString, CancellationToken)

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

ExecuteSqlCommand(DatabaseFacade, RawSqlString, IEnumerable<Object>)
已過時。.

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

請注意,這個方法不會啟動交易。 若要搭配交易使用這個方法,請先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel)UseTransaction(DatabaseFacade, DbTransaction)

請注意,此方法不會使用目前的 ExecutionStrategy ,因為 SQL 可能不是等冪,而且不會在交易中執行。 可以明確使用 ExecutionStrategy,如果 SQL 不是等冪性,請務必也使用交易。

如同接受 SQL 的任何 API,請務必將任何使用者輸入參數化,以防止 SQL 插入式攻擊。 您可以在 SQL 查詢字串中包含參數預留位置,然後提供參數值作為其他引數。 您提供的任何參數值都會自動轉換成 DbParameter。 您也可以考慮使用 ExecuteSqlInterpolated 來使用插補字串語法來建立參數。

ExecuteSqlCommand(DatabaseFacade, RawSqlString, Object[])
已過時。.

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

請注意,這個方法不會啟動交易。 若要搭配交易使用這個方法,請先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel)UseTransaction(DatabaseFacade, DbTransaction)

請注意,此方法不會使用目前的 ExecutionStrategy ,因為 SQL 可能不是等冪,而且不會在交易中執行。 可以明確使用 ExecutionStrategy,如果 SQL 不是等冪性,請務必也使用交易。

如同接受 SQL 的任何 API,請務必將任何使用者輸入參數化,以防止 SQL 插入式攻擊。 您可以在 SQL 查詢字串中包含參數預留位置,然後提供參數值作為其他引數。 您提供的任何參數值都會自動轉換成 DbParameter - context.Database.ExecuteSqlCommand("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm) 。 您也可以考慮使用 ExecuteSqlInterpolated 來使用插補字串語法來建立參數。

ExecuteSqlCommand(DatabaseFacade, FormattableString)
已過時。.

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

請注意,這個方法不會啟動交易。 若要搭配交易使用這個方法,請先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel)UseTransaction(DatabaseFacade, DbTransaction)

請注意,此方法不會使用目前的 ExecutionStrategy ,因為 SQL 可能不是等冪,而且不會在交易中執行。 可以明確使用 ExecutionStrategy,如果 SQL 不是等冪性,請務必也使用交易。

如同接受 SQL 的任何 API,請務必將任何使用者輸入參數化,以防止 SQL 插入式攻擊。 您可以在 SQL 查詢字串中包含參數預留位置,然後提供參數值作為其他引數。 您提供的任何參數值都會自動轉換成 DbParameter - context.Database.ExecuteSqlCommand($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})")

ExecuteSqlCommand(DatabaseFacade, String, Object[])

提供內容之資料庫相關資訊和作業的存取權。 這個類別的實例通常是從 Database 取得的,而且不是設計成直接在應用程式程式碼中建構。

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, IEnumerable<Object>, CancellationToken)
已過時。.

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

請注意,這個方法不會啟動交易。 若要搭配交易使用這個方法,請先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel)UseTransaction(DatabaseFacade, DbTransaction)

請注意,此方法不會使用目前的 ExecutionStrategy ,因為 SQL 可能不是等冪,而且不會在交易中執行。 可以明確使用 ExecutionStrategy,如果 SQL 不是等冪性,請務必也使用交易。

如同接受 SQL 的任何 API,請務必將任何使用者輸入參數化,以防止 SQL 插入式攻擊。 您可以在 SQL 查詢字串中包含參數預留位置,然後提供參數值作為其他引數。 您提供的任何參數值都會自動轉換成 DbParameter。 您也可以考慮使用 ExecuteSqlInterpolated 來使用插補字串語法來建立參數。

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, Object[])
已過時。.

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

請注意,這個方法不會啟動交易。 若要搭配交易使用這個方法,請先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel)UseTransaction(DatabaseFacade, DbTransaction)

請注意,此方法不會使用目前的 ExecutionStrategy ,因為 SQL 可能不是等冪,而且不會在交易中執行。 可以明確使用 ExecutionStrategy,如果 SQL 不是等冪性,請務必也使用交易。

如同接受 SQL 的任何 API,請務必將任何使用者輸入參數化,以防止 SQL 插入式攻擊。 您可以在 SQL 查詢字串中包含參數預留位置,然後提供參數值作為其他引數。 您提供的任何參數值都會自動轉換成 DbParameter - context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm) 。 您也可以考慮使用 ExecuteSqlInterpolated 來使用插補字串語法來建立參數。

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, CancellationToken)
已過時。.

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

請注意,這個方法不會啟動交易。 若要搭配交易使用這個方法,請先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel)UseTransaction(DatabaseFacade, DbTransaction)

請注意,這個方法不會使用目前的 ExecutionStrategy ,因為 SQL 可能不是等冪,也不會在交易中執行。 您可以明確使用 ExecutionStrategy,如果 SQL 不具等冪性,請務必也使用交易。

如同任何接受 SQL 的 API,請務必將任何使用者輸入參數化,以防止 SQL 插入式攻擊。 您可以在 SQL 查詢字串中包含參數預留位置,然後提供參數值作為其他引數。 您提供的任何參數值都會自動轉換成 DbParameter - context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm)

ExecuteSqlCommandAsync(DatabaseFacade, FormattableString, CancellationToken)
已過時。.

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

請注意,這個方法不會啟動交易。 若要搭配交易使用這個方法,請先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel)UseTransaction(DatabaseFacade, DbTransaction)

請注意,這個方法不會使用目前的 ExecutionStrategy ,因為 SQL 可能不是等冪,也不會在交易中執行。 您可以明確使用 ExecutionStrategy,如果 SQL 不具等冪性,請務必也使用交易。

如同任何接受 SQL 的 API,請務必將任何使用者輸入參數化,以防止 SQL 插入式攻擊。 您可以在 SQL 查詢字串中包含參數預留位置,然後提供參數值作為其他引數。 您提供的任何參數值都會自動轉換成 DbParameter - context.Database.ExecuteSqlCommandAsync($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})")

ExecuteSqlCommandAsync(DatabaseFacade, String, CancellationToken, Object[])

提供內容之資料庫相關資訊和作業的存取權。 這個類別的實例通常是從 Database 取得的,而且不是設計成直接在應用程式程式碼中建構。

ExecuteSqlInterpolated(DatabaseFacade, FormattableString)

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

ExecuteSqlInterpolatedAsync(DatabaseFacade, FormattableString, CancellationToken)

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

ExecuteSqlRaw(DatabaseFacade, String, IEnumerable<Object>)

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

ExecuteSqlRaw(DatabaseFacade, String, Object[])

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

ExecuteSqlRawAsync(DatabaseFacade, String, IEnumerable<Object>, CancellationToken)

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

ExecuteSqlRawAsync(DatabaseFacade, String, Object[])

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

ExecuteSqlRawAsync(DatabaseFacade, String, CancellationToken)

針對資料庫執行指定的 SQL,並傳回受影響的資料列數目。

GenerateCreateScript(DatabaseFacade)

產生腳本以建立目前模型的所有資料表。

GetAppliedMigrations(DatabaseFacade)

取得已套用至目標資料庫的所有移轉。

GetAppliedMigrationsAsync(DatabaseFacade, CancellationToken)

以非同步方式取得已套用至目標資料庫的所有移轉。

GetCommandTimeout(DatabaseFacade)

針對以這個 DbContext 執行的命令,傳回以秒為單位的逾時 () 設定。

GetConnectionString(DatabaseFacade)

取得為此 DbContext 設定的基礎連接字串。

GetDbConnection(DatabaseFacade)

取得這個 DbContext 的基礎 ADO.NET DbConnection

GetMigrations(DatabaseFacade)

取得已設定移轉元件中定義的所有移轉。

GetPendingMigrations(DatabaseFacade)

取得元件中定義但尚未套用至目標資料庫的所有移轉。

GetPendingMigrationsAsync(DatabaseFacade, CancellationToken)

以非同步方式取得元件中定義但尚未套用至目標資料庫的所有移轉。

HasPendingModelChanges(DatabaseFacade)

如果模型有要套用的暫止變更,則傳 true 回 。

IsRelational(DatabaseFacade)

true如果目前使用中的資料庫提供者是關係資料庫,則傳回 。

Migrate(DatabaseFacade)

將內容的任何擱置移轉套用至資料庫。 如果資料庫不存在,將會建立資料庫。

MigrateAsync(DatabaseFacade, CancellationToken)

以非同步方式將內容的任何擱置移轉套用至資料庫。 如果資料庫不存在,將會建立資料庫。

OpenConnection(DatabaseFacade)

開啟基礎 DbConnection

OpenConnectionAsync(DatabaseFacade, CancellationToken)

開啟基礎 DbConnection

SetCommandTimeout(DatabaseFacade, Nullable<Int32>)

設定逾時 (以秒為單位,) 用於以這個 DbContext 執行的命令。

SetCommandTimeout(DatabaseFacade, TimeSpan)

設定要用於以這個 DbContext 執行之命令的逾時。

SetConnectionString(DatabaseFacade, String)

設定為此 DbContext 設定的基礎連接字串。

SetDbConnection(DatabaseFacade, DbConnection)

設定這個 DbContext 的基礎 ADO.NET DbConnection

SetDbConnection(DatabaseFacade, DbConnection, Boolean)

設定這個 DbContext 的基礎 ADO.NET DbConnection

SqlQuery<TResult>(DatabaseFacade, FormattableString)

根據原始 SQL 查詢建立 LINQ 查詢,此查詢會傳回資料庫提供者原生支援的純量類型結果集。

SqlQueryRaw<TResult>(DatabaseFacade, String, Object[])

根據原始 SQL 查詢建立 LINQ 查詢,此查詢會傳回資料庫提供者原生支援的純量類型結果集。

UseTransaction(DatabaseFacade, DbTransaction)

DbTransaction設定 上資料庫作業 DbContext 要使用的 。

UseTransaction(DatabaseFacade, DbTransaction, Guid)

DbTransaction設定 上資料庫作業 DbContext 要使用的 。

UseTransactionAsync(DatabaseFacade, DbTransaction, Guid, CancellationToken)

DbTransaction設定 上資料庫作業 DbContext 要使用的 。

UseTransactionAsync(DatabaseFacade, DbTransaction, CancellationToken)

DbTransaction設定 上資料庫作業 DbContext 要使用的 。

IsSqlite(DatabaseFacade)

如果目前使用中的資料庫提供者是 SQLite 提供者,則傳 true 回 。

IsSqlServer(DatabaseFacade)

true如果目前使用中的資料庫提供者是SQL Server提供者,則傳回 。

EnlistTransaction(DatabaseFacade, Transaction)

指定要用於資料庫作業的現有 Transaction

GetEnlistedTransaction(DatabaseFacade)

傳回目前登記的交易。

適用於