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

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

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

设置此 DbContext的基础 ADO.NETDbConnection

SetDbConnection(DatabaseFacade, DbConnection)

设置此 DbContext的基础 ADO.NETDbConnection

SqlQuery<TResult>(DatabaseFacade, FormattableString)

基于原始 SQL 查询创建 LINQ 查询,该查询返回数据库提供程序本机支持的标量类型的结果集。

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

基于原始 SQL 查询创建 LINQ 查询,该查询返回数据库提供程序本机支持的标量类型的结果集。

UseTransaction(DatabaseFacade, DbTransaction, Guid)

DbTransaction设置 要由 上的DbContext数据库操作使用的 。

UseTransaction(DatabaseFacade, DbTransaction)

DbTransaction设置 要由 上的DbContext数据库操作使用的 。

UseTransactionAsync(DatabaseFacade, DbTransaction, Guid, CancellationToken)

DbTransaction设置 要由 上的DbContext数据库操作使用的 。

UseTransactionAsync(DatabaseFacade, DbTransaction, CancellationToken)

DbTransaction设置 要由 上的DbContext数据库操作使用的 。

IsSqlite(DatabaseFacade)

true如果当前使用的数据库提供程序是 SQLite 提供程序,则返回 。

IsSqlServer(DatabaseFacade)

true如果当前使用的数据库提供程序是SQL Server提供程序,则返回 。

EnlistTransaction(DatabaseFacade, Transaction)

指定要用于数据库操作的现有 Transaction 值。

GetEnlistedTransaction(DatabaseFacade)

返回当前登记的事务。

适用于