Share via


Database 类

定义

此类的实例是从 DbContext 对象获取的,可用于管理支持 DbContext 或连接的实际数据库。 这包括对数据库执行创建、删除和存在性检查操作。 请注意,删除和检查数据库是否存在,只需使用连接 (即不使用此类的静态方法) 完整的上下文。

public class Database
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1001:TypesThatOwnDisposableFieldsShouldBeDisposable", Justification="The DbContextTransaction and EntityTransaction should never be disposed by this class")]
public class Database
type Database = class
Public Class Database
继承
Database
属性

属性

CommandTimeout

获取或设置所有上下文操作的超时值(以秒为单位)。 默认值为 null,其中 null 指示将使用基础提供程序的默认值。

Connection

返回此上下文使用的连接。 如果连接尚不存在,则可能会导致创建连接。

CurrentTransaction

获取基础存储连接登记到的事务。 可能为 null。

DefaultConnectionFactory
已过时.

从数据库名称或连接字符串创建 DbConnection 时要使用的连接工厂。

Log

设置此属性以将 生成的 DbContext SQL 记录到给定委托。 例如,若要登录到控制台,请将此属性设置为 Write(String)

方法

BeginTransaction()

在基础存储连接上开始事务

BeginTransaction(IsolationLevel)

使用指定的隔离级别在基础存储连接上开始事务

CompatibleWithModel(Boolean)

检查数据库是否与当前的 Code First 模型兼容。

Create()

在数据库服务器上为支持上下文中定义的模型创建一个新的数据库。 请注意,在运行数据库初始化策略之前调用此方法将禁止执行该策略。

CreateIfNotExists()

在数据库服务器上为支持上下文中定义的模型创建一个新的数据库(但仅在该服务器上没有带相同名称的数据库时这样做)。

Delete()

如果数据库服务器上存在数据库,则删除该数据库;否则不执行任何操作。 从初始值设定项外部调用此方法会将数据库标记为尚未初始化。 这意味着,如果在删除数据库后尝试再次使用该数据库,则任何初始值设定项集都将再次运行,并且通常会尝试再次自动创建数据库。

Delete(DbConnection)

如果数据库服务器上存在数据库,则删除该数据库;否则不执行任何操作。

Delete(String)

如果数据库服务器上存在数据库,则删除该数据库;否则不执行任何操作。 与数据库的连接是使用给定的数据库名称或连接字符串创建的,其方式与 类的文档 DbContext 中所述的方式相同。

Equals(Object)

此类的实例是从 DbContext 对象获取的,可用于管理支持 DbContext 或连接的实际数据库。 这包括对数据库执行创建、删除和存在性检查操作。 请注意,删除和检查数据库是否存在,只需使用连接 (即不使用此类的静态方法) 完整的上下文。

ExecuteSqlCommand(String, Object[])

对数据库执行给定的 DDL/DML 命令。

与任何接受 SQL 的 API 一样,必须参数化任何用户输入,以防止 SQL 注入攻击。 可以在 SQL 查询字符串中包含参数占位符,然后将参数值作为其他参数提供。 提供的任何参数值将自动转换为 DbParameter。 上下文。Database.ExecuteSqlCommand (“UPDATE dbo”。帖子 SET Rating = 5 WHERE Author = @p0“, userSuppliedAuthor) ;或者,还可以构造 DbParameter 并将其提供给 SqlQuery。 这样可以在 SQL 查询字符串中使用命名参数。 上下文。Database.ExecuteSqlCommand (“UPDATE dbo”。帖子 SET Rating = 5 WHERE Author = @author“, new SqlParameter (”@author“, userSuppliedAuthor) ) ;

ExecuteSqlCommand(TransactionalBehavior, String, Object[])

对数据库执行给定的 DDL/DML 命令。

与任何接受 SQL 的 API 一样,必须参数化任何用户输入,以防止 SQL 注入攻击。 可以在 SQL 查询字符串中包含参数占位符,然后将参数值作为其他参数提供。 提供的任何参数值将自动转换为 DbParameter。 上下文。Database.ExecuteSqlCommand (“UPDATE dbo”。帖子 SET Rating = 5 WHERE Author = @p0“, userSuppliedAuthor) ;或者,还可以构造 DbParameter 并将其提供给 SqlQuery。 这样可以在 SQL 查询字符串中使用命名参数。 上下文。Database.ExecuteSqlCommand (“UPDATE dbo”。帖子 SET Rating = 5 WHERE Author = @author“, new SqlParameter (”@author“, userSuppliedAuthor) ) ;

ExecuteSqlCommandAsync(String, CancellationToken, Object[])

对数据库异步执行给定的 DDL/DML 命令。

与任何接受 SQL 的 API 一样,必须参数化任何用户输入,以防止 SQL 注入攻击。 可以在 SQL 查询字符串中包含参数占位符,然后将参数值作为其他参数提供。 提供的任何参数值将自动转换为 DbParameter。 上下文。Database.ExecuteSqlCommandAsync (“UPDATE dbo”。帖子 SET Rating = 5 WHERE Author = @p0“, userSuppliedAuthor) ;或者,还可以构造 DbParameter 并将其提供给 SqlQuery。 这样可以在 SQL 查询字符串中使用命名参数。 上下文。Database.ExecuteSqlCommandAsync (“UPDATE dbo”。帖子 SET Rating = 5 WHERE Author = @author“, new SqlParameter (”@author“, userSuppliedAuthor) ) ;

ExecuteSqlCommandAsync(String, Object[])

对数据库异步执行给定的 DDL/DML 命令。

与任何接受 SQL 的 API 一样,必须参数化任何用户输入,以防止 SQL 注入攻击。 可以在 SQL 查询字符串中包含参数占位符,然后将参数值作为其他参数提供。 提供的任何参数值将自动转换为 DbParameter。 上下文。Database.ExecuteSqlCommandAsync (“UPDATE dbo”。帖子 SET Rating = 5 WHERE Author = @p0“, userSuppliedAuthor) ;或者,还可以构造 DbParameter 并将其提供给 SqlQuery。 这样可以在 SQL 查询字符串中使用命名参数。 上下文。Database.ExecuteSqlCommandAsync (“UPDATE dbo”。帖子 SET Rating = 5 WHERE Author = @author“, new SqlParameter (”@author“, userSuppliedAuthor) ) ;

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

对数据库异步执行给定的 DDL/DML 命令。

与任何接受 SQL 的 API 一样,必须参数化任何用户输入,以防止 SQL 注入攻击。 可以在 SQL 查询字符串中包含参数占位符,然后将参数值作为其他参数提供。 提供的任何参数值将自动转换为 DbParameter。 上下文。Database.ExecuteSqlCommandAsync (“UPDATE dbo”。帖子 SET Rating = 5 WHERE Author = @p0“, userSuppliedAuthor) ;或者,还可以构造 DbParameter 并将其提供给 SqlQuery。 这样可以在 SQL 查询字符串中使用命名参数。 上下文。Database.ExecuteSqlCommandAsync (“UPDATE dbo”。帖子 SET Rating = 5 WHERE Author = @author“, new SqlParameter (”@author“, userSuppliedAuthor) ) ;

ExecuteSqlCommandAsync(TransactionalBehavior, String, Object[])

对数据库异步执行给定的 DDL/DML 命令。

与任何接受 SQL 的 API 一样,必须参数化任何用户输入,以防止 SQL 注入攻击。 可以在 SQL 查询字符串中包含参数占位符,然后将参数值作为其他参数提供。 提供的任何参数值将自动转换为 DbParameter。 上下文。Database.ExecuteSqlCommandAsync (“UPDATE dbo”。帖子 SET Rating = 5 WHERE Author = @p0“, userSuppliedAuthor) ;或者,还可以构造 DbParameter 并将其提供给 SqlQuery。 这样可以在 SQL 查询字符串中使用命名参数。 上下文。Database.ExecuteSqlCommandAsync (“UPDATE dbo”。帖子 SET Rating = 5 WHERE Author = @author“, new SqlParameter (”@author“, userSuppliedAuthor) ) ;

Exists()

检查服务器上是否存在数据库。

Exists(DbConnection)

检查服务器上是否存在数据库。

Exists(String)

检查服务器上是否存在数据库。 与数据库的连接是使用给定的数据库名称或连接字符串创建的,其方式与 类的文档 DbContext 中所述的方式相同。

GetHashCode()

此类的实例是从 DbContext 对象获取的,可用于管理支持 DbContext 或连接的实际数据库。 这包括对数据库执行创建、删除和存在性检查操作。 请注意,删除和检查数据库是否存在,只需使用连接 (即不使用此类的静态方法) 完整的上下文。

GetType()

获取当前实例的 Type

Initialize(Boolean)

运行在此上下文中注册的 IDatabaseInitializer<TContext> 。 如果“force”设置为 true,则无论以前是否运行过初始值设定项,初始值设定项都会运行。 如果在应用程序正在运行时删除了数据库并且需要重新初始化数据库时,则这样做会很有用。 如果“force”设置为 false,则仅在尚未为此应用域中的上下文、模型和连接运行初始值设定项时才运行。 如果需要确保在启动某个操作之前已创建数据库并为其设定种子,则通常使用此方法,其中延迟操作会导致问题,例如,当操作是事务的一部分时。

SetInitializer<TContext>(IDatabaseInitializer<TContext>)

设置要用于给定上下文类型的数据库初始值设定项。 首次使用给定 DbContext 类型访问数据库时,将调用数据库初始值设定项。 Code First 上下文的默认策略是 的 CreateDatabaseIfNotExists<TContext>实例。

SqlQuery(Type, String, Object[])

创建一个原始 SQL 查询,该查询将返回给定类型的元素。 类型可以是包含与从查询返回的列名匹配的属性的任何类型,也可以是简单的基元类型。 类型不一定是实体类型。 即使返回对象的类型是实体类型,上下文也决不会跟踪此查询的结果。 SqlQuery(String, Object[])使用 方法可返回由上下文跟踪的实体。

SqlQuery<TElement>(String, Object[])

创建一个原始 SQL 查询,该查询将返回给定泛型类型的元素。 类型可以是包含与从查询返回的列名匹配的属性的任何类型,也可以是简单的基元类型。 类型不一定是实体类型。 即使返回对象的类型是实体类型,上下文也决不会跟踪此查询的结果。 SqlQuery(String, Object[])使用 方法可返回由上下文跟踪的实体。

ToString()

此类的实例是从 DbContext 对象获取的,可用于管理支持 DbContext 或连接的实际数据库。 这包括对数据库执行创建、删除和存在性检查操作。 请注意,删除和检查数据库是否存在,只需使用连接 (即不使用此类的静态方法) 完整的上下文。

UseTransaction(DbTransaction)

如果希望实体框架在该外部事务中执行命令,则允许用户传入对象外部 Database 创建的数据库事务。 或者,传入 null 以清除框架对事务的了解。

适用于