DbContext 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
DbContext 实例表示工作单元和存储库模式的组合,以便可用于从数据库进行查询,并将更改组合在一起,然后将这些更改作为一个单元写回到存储区。 DbContext 在概念上类似于 ObjectContext。
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Justification="Casing is intentional")]
public class DbContext : IDisposable, System.Data.Entity.Infrastructure.IObjectContextAdapter
public class DbContext : IDisposable, System.Data.Entity.Infrastructure.IObjectContextAdapter
type DbContext = class
interface IDisposable
interface IObjectContextAdapter
Public Class DbContext
Implements IDisposable, IObjectContextAdapter
- 继承
-
DbContext
- 派生
- 属性
- 实现
注解
DbContext 通常与包含 DbSet<TEntity> 模型根实体属性的派生类型一起使用。 在创建派生类的实例时,将自动初始化这些集。 可以通过将 特性应用于 SuppressDbSetInitializationAttribute 整个派生上下文类或类上的单个属性来修改此行为。 可通过多种方法指定支持上下文的实体数据模型。 使用 Code First 方法时, DbSet<TEntity> 派生上下文上的属性用于按约定生成模型。 可以重写受保护的 OnModelCreating 方法以调整此模型。 可以通过从 DbModelBuilder 显式创建 模型并将此模型传递给其中一个 DbCompiledModel DbContext 构造函数,来更好地控制用于 Model First 方法的模型。 使用 Database First 或 Model First 方法时,可以使用实体Designer (或通过创建 EDMX 文件) 手动创建实体数据模型,然后使用实体连接字符串或EntityConnection对象指定此模型。 可通过多种方法指定与数据库的连接(包括数据库的名称)。 如果从派生上下文调用无参数 DbContext 构造函数,则派生上下文的名称用于在 app.config 或 web.config 文件中查找连接字符串。 如果未找到连接字符串,则名称将传递到类上 Database 注册的 DefaultConnectionFactory。 然后,连接工厂会在默认连接字符串中将上下文名称用作数据库名称。 (此默认连接字符串指向本地计算机上的 .\SQLEXPRESS,除非注册了不同的 DefaultConnectionFactory。) 不使用派生的上下文名称,还可以通过将名称传递给采用字符串的某个 DbContext 构造函数来显式指定连接/数据库名称。 还可以“name=myname”的形式传递名称,在此情况下,必须在 config 文件中找到该名称,否则将引发异常。 请注意,在 app.config 或 web.config 文件中找到的连接可以是正常的数据库连接字符串, (不是特殊的实体框架连接字符串) 在这种情况下,DbContext 将使用 Code First。 但是,如果在配置文件中找到的连接是一个特殊的 Entity Framework 连接字符串,则 DbContext 将使用 Database/Model First,并且将使用连接字符串中指定的模型。 还可使用现有的或显式创建的 DbConnection 来代替数据库/连接名称。 DbModelBuilderVersionAttribute可以将 应用于从 DbContext 派生的类,以设置上下文在创建模型时使用的约定版本。 如果未应用任何特性,则将使用约定的最新版本。
构造函数
DbContext() |
使用约定构建一个新的上下文实例以创建将连接到的数据库的名称。 按约定名称是派生上下文类 (命名空间的全名 + 类名) 。 请参阅类说明,了解如何使用此说明创建连接。 |
DbContext(DbCompiledModel) |
使用约定构造一个新的上下文实例以创建将连接到的数据库的名称,并从给定模型初始化该名称。 按约定名称是派生上下文类 (命名空间的全名 + 类名) 。 请参阅类说明,了解如何使用此说明创建连接。 |
DbContext(DbConnection, Boolean) |
通过现有连接来连接到数据库以构造一个新的上下文实例。
如果 |
DbContext(DbConnection, DbCompiledModel, Boolean) |
通过使用现有连接来连接到数据库以构造一个新的上下文实例,并从给定模型初始化该实例。
如果 |
DbContext(ObjectContext, Boolean) |
围绕现有 ObjectContext 构造新的上下文实例。 |
DbContext(ObjectContext, Boolean) |
围绕现有 ObjectContext 构造新的上下文实例。 |
DbContext(String) |
可以将给定字符串用作将连接到的数据库的名称或连接字符串来构造一个新的上下文实例。 请参阅类说明,了解如何使用此说明创建连接。 |
DbContext(String, DbCompiledModel) |
可以将给定字符串用作将连接到的数据库的名称或连接字符串来构造一个新的上下文实例,并从给定模型初始化该实例。 请参阅类说明,了解如何使用此说明创建连接。 |
属性
ChangeTracker |
提供对用于处理实体的更改跟踪的上下文功能的访问。 |
Configuration |
提供对上下文的配置选项的访问。 |
Database |
为此上下文创建一个数据库实例,该实例允许对基础数据库的创建/删除/存在检查。 |
方法
Dispose() |
调用受保护的 Dispose 方法。 |
Dispose(Boolean) |
释放上下文。 如果基础 ObjectContext 是由此上下文创建的,或者在创建此上下文时将所有权传递给此上下文,则也会释放该基础。 如果数据库 (DbConnection 对象) 的连接是通过此上下文创建的,或者在创建此上下文时将所有权传递给此上下文,则也会释放该连接。 |
Entry(Object) |
获取给定实体的 一个 DbEntityEntry 对象,该对象提供对实体相关信息的访问,并能够对实体执行操作。 |
Entry<TEntity>(TEntity) |
获取给定实体的 一个 DbEntityEntry<TEntity> 对象,该对象提供对实体相关信息的访问,并能够对实体执行操作。 |
Equals(Object) |
DbContext 实例表示工作单元和存储库模式的组合,以便可用于从数据库进行查询,并将更改组合在一起,然后将这些更改作为一个单元写回到存储区。 DbContext 在概念上类似于 ObjectContext。 |
GetHashCode() |
DbContext 实例表示工作单元和存储库模式的组合,以便可用于从数据库进行查询,并将更改组合在一起,然后将这些更改作为一个单元写回到存储区。 DbContext 在概念上类似于 ObjectContext。 |
GetType() |
DbContext 实例表示工作单元和存储库模式的组合,以便可用于从数据库进行查询,并将更改组合在一起,然后将这些更改作为一个单元写回到存储区。 DbContext 在概念上类似于 ObjectContext。 |
GetValidationErrors() |
验证跟踪的实体并返回包含验证结果的 DbEntityValidationResult 集合。 |
OnModelCreating(DbModelBuilder) |
在完成对派生上下文的模型的初始化后,并在该模型已锁定并用于初始化上下文之前,将调用此方法。 虽然此方法的默认实现不执行任何操作,但可在派生类中重写此方法,这样便能在锁定模型之前对其进行进一步的配置。 |
SaveChanges() |
将在此上下文中所做的所有更改保存到基础数据库。 |
SaveChangesAsync() |
以异步方式将在此上下文中所做的所有更改保存到基础数据库。 |
SaveChangesAsync(CancellationToken) |
以异步方式将在此上下文中所做的所有更改保存到基础数据库。 |
Set(Type) |
返回一个非泛型 DbSet 实例,用于访问上下文和基础存储中给定类型的实体。 |
Set<TEntity>() |
返回一个 DbSet<TEntity> 实例,用于访问上下文和基础存储中给定类型的实体。 |
ShouldValidateEntity(DbEntityEntry) |
扩展点允许用户重写仅验证添加的实体和修改的实体的默认行为。 |
ToString() |
DbContext 实例表示工作单元和存储库模式的组合,以便可用于从数据库进行查询,并将更改组合在一起,然后将这些更改作为一个单元写回到存储区。 DbContext 在概念上类似于 ObjectContext。 |
ValidateEntity(DbEntityEntry, IDictionary<Object,Object>) |
扩展点允许用户自定义实体的验证或筛选出验证结果。 由 GetValidationErrors() 调用。 |
显式接口实现
IObjectContextAdapter.ObjectContext |
返回此上下文的基础实体框架 ObjectContext。 |