ObjectContext 类

定义

ObjectContext 是封装 CLR 与数据库之间的连接的顶级对象,充当创建、读取、更新和删除操作的网关。

[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainability", "CA1506:AvoidExcessiveClassCoupling")]
public class ObjectContext : IDisposable, System.Data.Entity.Infrastructure.IObjectContextAdapter
type ObjectContext = class
    interface IDisposable
    interface IObjectContextAdapter
Public Class ObjectContext
Implements IDisposable, IObjectContextAdapter
继承
ObjectContext
属性
实现

构造函数

ObjectContext(EntityConnection)

使用给定的连接初始化 ObjectContext 类的新实例。 在构造过程中,从 EntityConnection 对象提取元数据工作区。

ObjectContext(EntityConnection, Boolean)

使用给定的连接和元数据工作区创建 ObjectContext。

ObjectContext(EntityConnection, String)

使用给定连接和实体容器名称初始化 ObjectContext 类的新实例。

ObjectContext(String)

使用给定连接字符串和默认实体容器名称初始化 ObjectContext 类的新实例。

ObjectContext(String, String)

使用给定连接字符串和实体容器名称初始化 ObjectContext 类的新实例。

属性

CommandTimeout

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

Connection

获取对象上下文使用的连接。

ContextOptions

获取实例, ObjectContextOptions 该实例包含影响 的行为 ObjectContext 的选项。

DefaultContainerName

获取或设置默认容器名称。

InterceptionContext

返回 DbInterceptionContext 用于此上下文的 。

MetadataWorkspace

获取对象上下文使用的元数据工作区。

ObjectStateManager

获取对象上下文用于跟踪对象更改的对象状态管理器。

QueryProvider

获取与此对象上下文关联的 LINQ 查询提供程序。

TransactionHandler

获取此上下文正在使用的事务处理程序。 如果未启动事务,则可能为 null。

方法

AcceptAllChanges()

接受在对象上下文中对对象所做的所有更改。

AddObject(String, Object)

将对象添加到对象上下文。

ApplyCurrentValues<TEntity>(String, TEntity)

将标量值从提供的对象复制到 ObjectContext 中具有相同键的对象中。

ApplyOriginalValues<TEntity>(String, TEntity)

将标量值从提供的对象复制到 ObjectContext 中具有相同键的对象的原始值集中。

ApplyPropertyChanges(String, Object)
已过时.

将已分离对象的属性更改应用于已附加到对象上下文的对象。

Attach(IEntityWithKey)

在对象具有实体键时将对象或对象图附加到对象上下文。

AttachTo(String, Object)

将特定实体集中的对象或对象图附加到对象上下文。

CreateDatabase()

使用当前数据源连接和 中的 StoreItemCollection 元数据创建数据库。

CreateDatabaseScript()

(DDL) 脚本生成数据定义语言,该脚本为 中的 StoreItemCollection 元数据创建架构对象 (表、主键、外键) 。 StoreItemCollection 用于加载存储架构定义语言 (SSDL) 文件中的元数据。

CreateEntityKey(String, Object)

为特定对象创建实体键,如果实体键已存在,则返回该键。

CreateObject<T>()

创建并返回所请求类型的实例。

CreateObjectSet<TEntity>()

创建新的 ObjectSet<TEntity> 实例,该实例用于查询、添加、修改和删除指定实体类型的对象。

CreateObjectSet<TEntity>(String)

创建新的 ObjectSet<TEntity> 实例,该实例用于查询、添加、修改和删除具有指定类型和指定实体集名称的对象。

CreateProxyTypes(IEnumerable<Type>)

为提供的枚举中的每个类型生成可用于 Entity Framework 的等效类型。

CreateQuery<T>(String, ObjectParameter[])

使用指定查询字符串在当前对象上下文中创建 ObjectQuery<T>

DatabaseExists()

检查存储区上是否存在指定为当前存储连接中数据库的数据库。 大部分实际工作由 DbProviderServices 实现为当前存储连接完成。

DeleteDatabase()

删除在当前数据源连接中指定为数据库的数据库。

DeleteObject(Object)

标记对象以备删除。

Detach(Object)

从对象上下文移除对象。

DetectChanges()

确保 ObjectStateEntry 更改与 由 ObjectStateManager 跟踪的所有 对象中的更改同步。

Dispose()

释放对象上下文使用的资源。

Dispose(Boolean)

释放对象上下文使用的资源。

ExecuteFunction(String, ObjectParameter[])

执行在数据源中定义并在概念模型中表示的存储过程或函数,丢弃该函数返回的任何结果,并返回执行该函数影响的行数。

ExecuteFunction<TElement>(String, ExecutionOptions, ObjectParameter[])

在默认容器上执行给定函数。

ExecuteFunction<TElement>(String, MergeOption, ObjectParameter[])

使用指定的参数和合并选项,执行在数据源中定义并在概念模型中表示的给定存储过程或函数。 返回类型化 ObjectResult<T>

ExecuteFunction<TElement>(String, ObjectParameter[])

使用指定的参数,执行在数据源中定义并在概念模型中映射的存储过程或函数。 返回类型化 ObjectResult<T>

ExecuteStoreCommand(String, Object[])

利用现有连接对数据源直接执行任意命令。 命令是使用服务器的本机查询语言(如 SQL)指定的。

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

ExecuteStoreCommand(TransactionalBehavior, String, Object[])

利用现有连接对数据源直接执行任意命令。 命令是使用服务器的本机查询语言(如 SQL)指定的。

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

ExecuteStoreCommandAsync(String, CancellationToken, Object[])

使用现有连接直接对数据源异步执行任意命令。 命令是使用服务器的本机查询语言(如 SQL)指定的。

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

ExecuteStoreCommandAsync(String, Object[])

使用现有连接直接对数据源异步执行任意命令。 命令是使用服务器的本机查询语言(如 SQL)指定的。

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

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

使用现有连接直接对数据源异步执行任意命令。 命令是使用服务器的本机查询语言(如 SQL)指定的。

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

ExecuteStoreCommandAsync(TransactionalBehavior, String, Object[])

使用现有连接直接对数据源异步执行任意命令。 命令是使用服务器的本机查询语言(如 SQL)指定的。

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

ExecuteStoreQuery<TElement>(String, ExecutionOptions, Object[])

对数据源直接执行查询,此查询将返回类型化结果的序列。 查询是使用服务器的本机查询语言(如 SQL)指定的。 上下文不跟踪结果,请使用指定实体集名称的重载来跟踪结果。

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

ExecuteStoreQuery<TElement>(String, Object[])

对数据源直接执行查询,此查询将返回类型化结果的序列。 查询是使用服务器的本机查询语言(如 SQL)指定的。 上下文不跟踪结果,请使用指定实体集名称的重载来跟踪结果。

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

ExecuteStoreQuery<TElement>(String, String, ExecutionOptions, Object[])

对数据源直接执行查询,此查询将返回类型化结果的序列。 查询是使用服务器的本机查询语言(如 SQL)指定的。 如果指定了实体集名称,则上下文将跟踪结果。

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

ExecuteStoreQuery<TElement>(String, String, MergeOption, Object[])

对数据源直接执行查询,此查询将返回类型化结果的序列。 查询是使用服务器的本机查询语言(如 SQL)指定的。 如果指定了实体集名称,则上下文将跟踪结果。

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

ExecuteStoreQueryAsync<TElement>(String, CancellationToken, Object[])

直接对数据源异步执行查询,并返回类型化结果序列。 查询是使用服务器的本机查询语言(如 SQL)指定的。 上下文不跟踪结果,请使用指定实体集名称的重载来跟踪结果。

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

ExecuteStoreQueryAsync<TElement>(String, ExecutionOptions, CancellationToken, Object[])

直接对数据源异步执行查询,并返回类型化结果序列。 查询是使用服务器的本机查询语言(如 SQL)指定的。 上下文不跟踪结果,请使用指定实体集名称的重载来跟踪结果。

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

ExecuteStoreQueryAsync<TElement>(String, ExecutionOptions, Object[])

直接对数据源异步执行查询,并返回类型化结果序列。 查询是使用服务器的本机查询语言(如 SQL)指定的。 上下文不跟踪结果,请使用指定实体集名称的重载来跟踪结果。

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

ExecuteStoreQueryAsync<TElement>(String, Object[])

直接对数据源异步执行查询,并返回类型化结果序列。 查询是使用服务器的本机查询语言(如 SQL)指定的。 上下文不跟踪结果,请使用指定实体集名称的重载来跟踪结果。

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

ExecuteStoreQueryAsync<TElement>(String, String, ExecutionOptions, CancellationToken, Object[])

直接对数据源异步执行查询,并返回类型化结果序列。 查询是使用服务器的本机查询语言(如 SQL)指定的。 如果指定了实体集名称,则上下文将跟踪结果。

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

ExecuteStoreQueryAsync<TElement>(String, String, ExecutionOptions, Object[])

直接对数据源异步执行查询,并返回类型化结果序列。 查询是使用服务器的本机查询语言(如 SQL)指定的。 如果指定了实体集名称,则上下文将跟踪结果。

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

Finalize()

完成 类的 ObjectContext 实例。

GetKnownProxyTypes()

返回所有现有代理类型。

GetObjectByKey(EntityKey)

返回具有指定实体键的对象。

GetObjectType(Type)

返回与指定类型的代理对象关联的 POCO 实体的实体类型。

LoadProperty(Object, String)

通过指定的导航属性并使用默认合并选项,显式加载与提供的对象相关的对象。

LoadProperty(Object, String, MergeOption)

通过指定的导航属性并使用指定的合并选项,显式加载与提供的对象相关的对象。

LoadProperty<TEntity>(TEntity, Expression<Func<TEntity,Object>>)

通过指定的 LINQ 查询并使用默认合并选项,显式加载与提供的对象相关的对象。

LoadProperty<TEntity>(TEntity, Expression<Func<TEntity,Object>>, MergeOption)

通过指定的 LINQ 查询并使用指定的合并选项,显式加载与提供的对象相关的对象。

Refresh(RefreshMode, IEnumerable)

使用数据库中的数据汇报对象上下文中的对象集合。

Refresh(RefreshMode, Object)

使用数据库中的数据在对象上下文中汇报对象。

RefreshAsync(RefreshMode, IEnumerable)

使用数据库中的数据异步更新对象上下文中的对象集合。

RefreshAsync(RefreshMode, IEnumerable, CancellationToken)

使用数据库中的数据异步更新对象上下文中的对象集合。

RefreshAsync(RefreshMode, Object)

使用数据库中的数据异步更新对象上下文中的对象。

RefreshAsync(RefreshMode, Object, CancellationToken)

使用数据库中的数据异步更新对象上下文中的对象。

SaveChanges()

保留数据库的所有更新,并重置对象上下文中的更改跟踪。

SaveChanges(Boolean)
已过时.

保留数据库的所有更新,并选择性地重置对象上下文中的更改跟踪。

SaveChanges(SaveOptions)

保留数据库的所有更新,并选择性地重置对象上下文中的更改跟踪。

SaveChangesAsync()

异步保留数据库的所有更新,并在对象上下文中重置更改跟踪。

SaveChangesAsync(CancellationToken)

异步保留数据库的所有更新,并在对象上下文中重置更改跟踪。

SaveChangesAsync(SaveOptions)

异步保留数据库的所有更新,并选择性地重置对象上下文中的更改跟踪。

SaveChangesAsync(SaveOptions, CancellationToken)

异步保留数据库的所有更新,并选择性地重置对象上下文中的更改跟踪。

Translate<TElement>(DbDataReader)

将包含实体数据行的 DbDataReader 转换为请求的实体类型的对象。

Translate<TEntity>(DbDataReader, String, MergeOption)

在特定的实体集中,使用指定的合并选项将包含实体数据行的 DbDataReader 转换为请求的实体类型的对象。

TryGetObjectByKey(EntityKey, Object)

返回具有指定实体键的对象。

事件

ObjectMaterialized

当使用数据源中的数据创建新的实体对象(作为查询或加载操作的一部分)时发生。

SavingChanges

在将更改保存到数据源时发生。

显式接口实现

IObjectContextAdapter.ObjectContext

返回自身。 ObjectContext 实现 IObjectContextAdapter 为 和 ObjectContext 提供一个通用接口 DbContext ,这将返回基础 ObjectContext。

适用于