语言

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

构造函数

名称 说明
DatabaseFacade(DbContext)

初始化 DatabaseFacade 类的新实例。 此类的实例通常是从中 Database 获取的,它不设计为直接在应用程序代码中构造。

属性

名称 说明
AutoSavepointsEnabled

如果在手动启动BeginTransaction()事务后调用事务保存点,则是否会自动SaveChanges()创建事务保存点。

AutoTransactionBehavior

获取或设置一个值,该值指示如果尚未调用“BeginTransaction”和“UseTransaction”,是否会自动 SaveChanges() 创建事务。

AutoTransactionsEnabled
已过时.
已过时.

获取或设置一个值,该值指示如果未调用任何“BeginTransaction”或“UseTransaction”方法,是否会自动 SaveChanges() 创建事务。

CurrentTransaction

获取上下文正在使用的当前 IDbContextTransaction 值,如果未使用任何事务,则为 null。

ProviderName

返回当前正在使用的数据库提供程序的名称。 该名称通常是提供程序程序集的名称。 通常更容易使用糖方法,例如 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

这是一个内部 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 获取的,它不设计为直接在应用程序代码中构造。

扩展方法

名称 说明
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 可能不是幂等的,也不会在事务中运行。 可以显式使用 ExecutionStrategy,确保在 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 可能不是幂等的,也不会在事务中运行。 可以显式使用 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, String, Object[])

提供对上下文的数据库相关信息和操作的访问权限。 此类的实例通常是从中 Database 获取的,它不设计为直接在应用程序代码中构造。

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

获取此DbContext基础 ADO.NET DbConnection 。

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)

返回 true 当前正在使用的数据库提供程序是否为 Cosmos 提供程序。

IsInMemory(DatabaseFacade)

返回 true 当前正在使用的数据库提供程序是否为内存中提供程序。

IsRelational(DatabaseFacade)

返回 true 当前正在使用的数据库提供程序是否为关系数据库。

IsSqlite(DatabaseFacade)

返回 true 当前正在使用的数据库提供程序是否为 SQLite 提供程序。

IsSqlServer(DatabaseFacade)

返回true当前正在使用的数据库提供程序是否为SQL Server提供程序。

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

使用指定的sessionTokens标记设置DbContext每个容器的复合会话令牌。

UseTransaction(DatabaseFacade, DbTransaction, Guid)

设置 要由数据库操作对 /a0> 使用的设置。

UseTransaction(DatabaseFacade, DbTransaction)

设置 要由数据库操作对 /a0> 使用的设置。

UseTransactionAsync(DatabaseFacade, DbTransaction, CancellationToken)

设置 要由数据库操作对 /a0> 使用的设置。

UseTransactionAsync(DatabaseFacade, DbTransaction, Guid, CancellationToken)

设置 要由数据库操作对 /a0> 使用的设置。

适用于