語言

DatabaseFacade 類別

定義

提供資料庫相關資訊與操作的存取,以提供上下文。 這個類別的實例通常是從 Database 應用程式中取得,且並非設計成直接在應用程式程式碼中建構。

public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>
[System.Runtime.CompilerServices.Nullable(0)]
public class DatabaseFacade : Microsoft.EntityFrameworkCore.Infrastructure.IInfrastructure<IServiceProvider>, Microsoft.EntityFrameworkCore.Infrastructure.IResettableService, Microsoft.EntityFrameworkCore.Storage.IDatabaseFacadeDependenciesAccessor
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>
[<System.Runtime.CompilerServices.Nullable(0)>]
type DatabaseFacade = class
    interface IInfrastructure<IServiceProvider>
    interface IDatabaseFacadeDependenciesAccessor
    interface IResettableService
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), IResettableService
Public Class DatabaseFacade
Implements IDatabaseFacadeDependenciesAccessor, IInfrastructure(Of IServiceProvider)
繼承
DatabaseFacade
屬性
實作
IInfrastructure<IServiceProvider> IResettableService IDatabaseFacadeDependenciesAccessor Microsoft.EntityFrameworkCore.Internal.IDatabaseFacadeDependenciesAccessor

建構函式

名稱 Description
DatabaseFacade(DbContext)

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

屬性

名稱 Description
AutoSavepointsEnabled

交易儲存點是否會自動 SaveChanges() 建立,若交易在手動啟動後 BeginTransaction()被呼叫。

AutoTransactionBehavior

若未呼叫「BeginTransaction」或「UseTransaction」,會取得或設定一個值,表示交易是否會自動 SaveChanges() 建立。

AutoTransactionsEnabled
已淘汰.
已淘汰.

若未呼叫任何「BeginTransaction」或「UseTransaction」方法,則會取得或設定一個值,指示交易是否會自動 SaveChanges() 建立。

CurrentTransaction

取得上下文目前使用的狀態 IDbContextTransaction ,若沒有交易正在使用則為空值。

ProviderName

回傳目前使用的資料庫提供者名稱。 名稱通常是提供者組裝的名稱。 通常使用糖法 Microsoft.EntityFrameworkCore.SqlServerDatabaseFacadeExtensions.IsSqlServer 會比直接呼叫這個方法更簡單。

方法

名稱 Description
BeginTransaction()

開始一筆新交易。

BeginTransactionAsync(CancellationToken)

非同步啟動新交易。

CanConnect()

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

CanConnectAsync(CancellationToken)

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

CommitTransaction()

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

CommitTransactionAsync(CancellationToken)

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

CreateExecutionStrategy()

建立配置 IExecutionStrategy的實例。

EnsureCreated()

確保上下文的資料庫存在。

EnsureCreatedAsync(CancellationToken)

確保上下文的資料庫存在。

EnsureDeleted()

確保上下文資料庫不存在。 若不存在,則不採取任何行動。 如果真的存在,資料庫就會被刪除。

警告:整個資料庫已被刪除,且不會僅移除模型在此情境中使用的資料庫物件。

EnsureDeletedAsync(CancellationToken)

非同步確保上下文的資料庫不存在。 若不存在,則不採取任何行動。 如果真的存在,資料庫就會被刪除。

警告:整個資料庫已被刪除,且不會僅移除模型在此情境中使用的資料庫物件。

RollbackTransaction()

丟棄當前交易中未完成的操作。

RollbackTransactionAsync(CancellationToken)

丟棄當前交易中未完成的操作。

明確介面實作

名稱 Description
IDatabaseFacadeDependenciesAccessor.Context

這是一個內部 API,支援 Entity Framework Core 基礎架構,且不受公開 API 相同的相容性標準約束。 該內容可能會在任何新聞稿中未經通知而更改或移除。 你應該只在程式碼中直接使用它,並且要非常謹慎,並且要知道這樣做可能會導致更新到新的 Entity Framework Core 版本時應用程式失敗。

IDatabaseFacadeDependenciesAccessor.Dependencies

這是一個內部 API,支援 Entity Framework Core 基礎架構,且不受公開 API 相同的相容性標準約束。 該內容可能會在任何新聞稿中未經通知而更改或移除。 你應該只在程式碼中直接使用它,並且要非常謹慎,並且要知道這樣做可能會導致更新到新的 Entity Framework Core 版本時應用程式失敗。

IInfrastructure<IServiceProvider>.Instance

取得用於解決服務的範圍 IServiceProvider 。

此特性是為需要利用未直接暴露於公開 API 表面服務的擴充方法所設計。

IResettableService.ResetState()

重置服務,讓它能從池中使用。

IResettableService.ResetStateAsync(CancellationToken)

提供資料庫相關資訊與操作的存取,以提供上下文。 這個類別的實例通常是從 Database 應用程式中取得,且並非設計成直接在應用程式程式碼中建構。

擴充方法

名稱 Description
AppendSessionToken(DatabaseFacade, String)

附加預設容器 DbContext的複合會話令牌。

AppendSessionTokens(DatabaseFacade, IReadOnlyDictionary<String,String>)

為此,為每個 DbContext 容器附加複合會話的令牌,並以 中指定的 sessionTokens令牌。

BeginTransaction(DatabaseFacade, IsolationLevel)

以給定 IsolationLevel的 開始新交易。

BeginTransactionAsync(DatabaseFacade, IsolationLevel, CancellationToken)

非同步地以給定 IsolationLevel的 開始新交易。

CloseConnection(DatabaseFacade)

關閉標的 DbConnection。

CloseConnectionAsync(DatabaseFacade)

關閉標的 DbConnection。

EnlistTransaction(DatabaseFacade, Transaction)

指定一個用於資料庫操作的現有 Transaction 工具。

ExecuteSql(DatabaseFacade, FormattableString)

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

ExecuteSqlAsync(DatabaseFacade, FormattableString, CancellationToken)

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

ExecuteSqlCommand(DatabaseFacade, FormattableString)
已淘汰.

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

請注意,此方法不會啟動交易。 若要使用此方法處理交易,首先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel) 或 UseTransaction(DatabaseFacade, DbTransaction)。

請注意,此方法不使用當前 ExecutionStrategy 值,因為 SQL 可能不是冪등元,且不在交易中執行。 執行策略可以明確使用,確保如果 SQL 不是冪等元,也要使用交易。

和任何接受 SQL 的 API 一樣,必須對使用者輸入進行參數化,以防止 SQL 注入攻擊。 你可以在 SQL 查詢字串中加入參數佔位符,然後以參數值作為額外參數。 你提供的任何參數值都會自動轉換成 DbParameter - context.Database.ExecuteSqlCommand($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})")。

ExecuteSqlCommand(DatabaseFacade, RawSqlString, IEnumerable<Object>)
已淘汰.

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

請注意,此方法不會啟動交易。 若要使用此方法處理交易,首先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel) 或 UseTransaction(DatabaseFacade, DbTransaction)。

請注意,此方法不使用當前 ExecutionStrategy 值,因為 SQL 可能不是冪등元,且不在交易中執行。 執行策略可以明確使用,確保如果 SQL 不是冪等元,也要使用交易。

和任何接受 SQL 的 API 一樣,必須對使用者輸入進行參數化,以防止 SQL 注入攻擊。 你可以在 SQL 查詢字串中加入參數佔位符,然後以參數值作為額外參數。 你提供的任何參數值都會自動轉換成 DbParameter。 你也可以考慮使用 ExecuteSqlInterpolated,利用插值字串語法來建立參數。

ExecuteSqlCommand(DatabaseFacade, RawSqlString, Object[])
已淘汰.

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

請注意,此方法不會啟動交易。 若要使用此方法處理交易,首先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel) 或 UseTransaction(DatabaseFacade, DbTransaction)。

請注意,此方法不使用當前 ExecutionStrategy 值,因為 SQL 可能不是冪등元,且不在交易中執行。 執行策略可以明確使用,確保如果 SQL 不是冪等元,也要使用交易。

和任何接受 SQL 的 API 一樣,必須對使用者輸入進行參數化,以防止 SQL 注入攻擊。 你可以在 SQL 查詢字串中加入參數佔位符,然後以參數值作為額外參數。 你提供的任何參數值都會自動轉換成 DbParameter - context.Database.ExecuteSqlCommand("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm)。 你也可以考慮使用 ExecuteSqlInterpolated,利用插值字串語法來建立參數。

ExecuteSqlCommand(DatabaseFacade, String, Object[])

提供資料庫相關資訊與操作的存取,以提供上下文。 這個類別的實例通常是從 Database 應用程式中取得,且並非設計成直接在應用程式程式碼中建構。

ExecuteSqlCommandAsync(DatabaseFacade, FormattableString, CancellationToken)
已淘汰.

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

請注意,此方法不會啟動交易。 若要使用此方法處理交易,首先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel) 或 UseTransaction(DatabaseFacade, DbTransaction)。

請注意,此方法不使用當前 ExecutionStrategy 值,因為 SQL 可能不是冪등元,且不在交易中執行。 執行策略可以明確使用,確保如果 SQL 不是冪等元,也要使用交易。

和任何接受 SQL 的 API 一樣,必須對使用者輸入進行參數化,以防止 SQL 注入攻擊。 你可以在 SQL 查詢字串中加入參數佔位符,然後以參數值作為額外參數。 你提供的任何參數值都會自動轉換成 DbParameter - context.Database.ExecuteSqlCommandAsync($"SELECT * FROM [dbo].[SearchBlogs]({userSuppliedSearchTerm})")。

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, CancellationToken)
已淘汰.

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

請注意,此方法不會啟動交易。 若要使用此方法處理交易,首先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel) 或 UseTransaction(DatabaseFacade, DbTransaction)。

請注意,此方法不使用當前 ExecutionStrategy 值,因為 SQL 可能不是冪등元,且不在交易中執行。 執行策略可以明確使用,確保如果 SQL 不是冪等元,也要使用交易。

和任何接受 SQL 的 API 一樣,必須對使用者輸入進行參數化,以防止 SQL 注入攻擊。 你可以在 SQL 查詢字串中加入參數佔位符,然後以參數值作為額外參數。 你提供的任何參數值都會自動轉換成 DbParameter - context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm)。

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, IEnumerable<Object>, CancellationToken)
已淘汰.

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

請注意,此方法不會啟動交易。 若要使用此方法處理交易,首先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel) 或 UseTransaction(DatabaseFacade, DbTransaction)。

請注意,此方法不使用當前 ExecutionStrategy 值,因為 SQL 可能不是冪등元,且不在交易中執行。 執行策略可以明確使用,確保如果 SQL 不是冪等元,也要使用交易。

和任何接受 SQL 的 API 一樣,必須對使用者輸入進行參數化,以防止 SQL 注入攻擊。 你可以在 SQL 查詢字串中加入參數佔位符,然後以參數值作為額外參數。 你提供的任何參數值都會自動轉換成 DbParameter。 你也可以考慮使用 ExecuteSqlInterpolated,利用插值字串語法來建立參數。

ExecuteSqlCommandAsync(DatabaseFacade, RawSqlString, Object[])
已淘汰.

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

請注意,此方法不會啟動交易。 若要使用此方法處理交易,首先呼叫 BeginTransaction(DatabaseFacade, IsolationLevel) 或 UseTransaction(DatabaseFacade, DbTransaction)。

請注意,此方法不使用當前 ExecutionStrategy 值,因為 SQL 可能不是冪등元,且不在交易中執行。 執行策略可以明確使用,確保如果 SQL 不是冪等元,也要使用交易。

和任何接受 SQL 的 API 一樣,必須對使用者輸入進行參數化,以防止 SQL 注入攻擊。 你可以在 SQL 查詢字串中加入參數佔位符,然後以參數值作為額外參數。 你提供的任何參數值都會自動轉換成 DbParameter - context.Database.ExecuteSqlCommandAsync("SELECT * FROM [dbo].[SearchBlogs]({0})", userSuppliedSearchTerm)。 你也可以考慮使用 ExecuteSqlInterpolated,利用插值字串語法來建立參數。

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, CancellationToken)

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

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

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

ExecuteSqlRawAsync(DatabaseFacade, String, Object[])

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

GenerateCreateScript(DatabaseFacade)

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

GetAppliedMigrations(DatabaseFacade)

取得所有已套用到目標資料庫的遷移資料。

GetAppliedMigrationsAsync(DatabaseFacade, CancellationToken)

非同步接收所有已套用到目標資料庫的遷移。

GetCommandTimeout(DatabaseFacade)

回傳執行指令 DbContext設定的逾時(秒數)。

GetConnectionString(DatabaseFacade)

為此DbContext設定底層的 連接字串 。

GetCosmosClient(DatabaseFacade)

了解這背後DbContext的原理CosmosClient。

GetCosmosDatabaseId(DatabaseFacade)

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

GetDbConnection(DatabaseFacade)

取得底層的 ADO.NET DbConnection 來處理這個DbContext。

GetEnlistedTransaction(DatabaseFacade)

回傳目前已登記的交易。

GetInfrastructure<T>(IInfrastructure<T>)

從一個被隱藏的屬性中取得價值 IInfrastructure<T>。

此方法通常由資料庫提供者(及其他擴充)使用。 它通常不被用於應用程式程式碼中。

GetMigrations(DatabaseFacade)

取得設定中所有定義的遷移。

GetPendingMigrations(DatabaseFacade)

取得所有在組裝中定義但尚未套用到目標資料庫的遷移。

GetPendingMigrationsAsync(DatabaseFacade, CancellationToken)

非同步取得所有在組裝中定義但尚未套用到目標資料庫的遷移。

GetSessionToken(DatabaseFacade)

取得預設容器 DbContext的複合會話令牌。

GetSessionTokens(DatabaseFacade)

會取得一個字典,包含每個容器 DbContext的複合會話令牌。

HasPendingModelChanges(DatabaseFacade)

若模型有待執行的變更,則回傳 true 。

IsCosmos(DatabaseFacade)

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

IsInMemory(DatabaseFacade)

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

IsRelational(DatabaseFacade)

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

IsSqlite(DatabaseFacade)

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

IsSqlServer(DatabaseFacade)

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

Migrate(DatabaseFacade, String)

將遷移應用於資料庫的上下文。 如果資料庫還不存在,我會建立。

Migrate(DatabaseFacade)

將上下文中待處理的遷移資料套用到資料庫中。 如果資料庫還不存在,我會建立。

MigrateAsync(DatabaseFacade, CancellationToken)

非同步地將上下文中待處理的遷移資料套用到資料庫。 如果資料庫還不存在,我會建立。

MigrateAsync(DatabaseFacade, String, CancellationToken)

非同步地將上下文遷移套用於資料庫。 如果資料庫還不存在,我會建立。

OpenConnection(DatabaseFacade)

開啟標的 DbConnection。

OpenConnectionAsync(DatabaseFacade, CancellationToken)

開啟標的 DbConnection。

SetCommandTimeout(DatabaseFacade, Nullable<Int32>)

設定以秒為單位的超時,用於執行此 DbContext指令。

SetCommandTimeout(DatabaseFacade, TimeSpan)

設定使用此 DbContext指令執行的逾時時間。

SetConnectionString(DatabaseFacade, String)

設定底層的 連接字串 以設定此 DbContext。

SetDbConnection(DatabaseFacade, DbConnection, Boolean)

設定此底層的 ADO.NET DbConnectionDbContext。

SetDbConnection(DatabaseFacade, DbConnection)

設定此底層的 ADO.NET DbConnectionDbContext。

SqlQuery<TResult>(DatabaseFacade, FormattableString)

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

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

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

UseSessionToken(DatabaseFacade, String)

設定此容器的複合會話令牌。DbContext

UseSessionTokens(DatabaseFacade, IReadOnlyDictionary<String,String>)

為每個 DbContext 容器設定複合會話的令牌,並指定於 sessionTokens。

UseTransaction(DatabaseFacade, DbTransaction, Guid)

將 設定 DbTransaction 為資料庫操作 DbContext的 。

UseTransaction(DatabaseFacade, DbTransaction)

將 設定 DbTransaction 為資料庫操作 DbContext的 。

UseTransactionAsync(DatabaseFacade, DbTransaction, CancellationToken)

將 設定 DbTransaction 為資料庫操作 DbContext的 。

UseTransactionAsync(DatabaseFacade, DbTransaction, Guid, CancellationToken)

將 設定 DbTransaction 為資料庫操作 DbContext的 。

適用於