EntityCollection<TEntity>.Attach 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义对象上下文中两个附加对象之间的关系。
重载
Attach(IEnumerable<TEntity>) |
定义对象上下文中对象和相关对象集合之间的关系。 |
Attach(TEntity) |
定义对象上下文中两个附加对象之间的关系。 |
Attach(IEnumerable<TEntity>)
定义对象上下文中对象和相关对象集合之间的关系。
public:
void Attach(System::Collections::Generic::IEnumerable<TEntity> ^ entities);
public void Attach (System.Collections.Generic.IEnumerable<TEntity> entities);
override this.Attach : seq<'Entity (requires 'Entity : null and 'Entity :> System.Data.Objects.DataClasses.IEntityWithRelationships)> -> unit
override this.Attach : seq<'Entity (requires 'Entity : null)> -> unit
Public Sub Attach (entities As IEnumerable(Of TEntity))
参数
- entities
- IEnumerable<TEntity>
对象上下文中与源对象相关的对象集合。
例外
entities
集合为 null
。
源对象或 entities
集合中的对象为 null
或者不处于 Unchanged 或 Modified 状态。
- 或 -
关系不能基于 EDM 元数据定义。 这会在概念性架构中的关联不支持两种类型间的关系时发生。
注解
Attach 方法用于定义当源对象和相关对象集合已经存在于对象上下文中时两者之间的关系. 要附加已经定义了关系的对象或对象图,请对 Attach 调用 ObjectContext 方法。 要创建与源对象关联的新对象,请对 Add 调用 EntityCollection<TEntity> 方法。 有关详细信息,请参阅附加和分离对象。
如果集合已经填充或部分填充,Attach 方法将现有实体和给定实体合并。 不假定给定实体为相关实体的完整集。
所有传递的实体必须处于 Unchanged 或 Modified 状态。 仅当状态管理器正在跟踪关系实例时,允许 Deleted 状态的对象。
适用于
Attach(TEntity)
定义对象上下文中两个附加对象之间的关系。
public:
void Attach(TEntity entity);
public void Attach (TEntity entity);
override this.Attach : 'Entity -> unit
Public Sub Attach (entity As TEntity)
参数
- entity
- TEntity
附加的对象。
例外
在 entity
为 null
时。
当 entity
无法与源对象关联时。 这会在概念性架构中的关联不支持两种类型间的关系时发生。
- 或 -
示例
此示例基于 Adventure Works 销售模型。 若要运行此示例中的代码,必须已将 AdventureWorks 销售模型添加到您的项目中,并将项目配置为使用实体框架。 为此,请完成 如何:手动配置实体框架项目 和 如何:手动定义模型和映射文件中的过程。
此示例将分离 SalesOrderDetail
对象的集合和分离 SalesOrderHeader
的对象附加到对象上下文,然后定义该 SalesOrderHeader
对象与每个 SalesOrderDetail
对象之间的关系。
private static void AttachRelatedObjects(
ObjectContext currentContext,
SalesOrderHeader detachedOrder,
List<SalesOrderDetail> detachedItems)
{
// Attach the root detachedOrder object to the supplied context.
currentContext.Attach(detachedOrder);
// Attach each detachedItem to the context, and define each relationship
// by attaching the attached SalesOrderDetail object to the EntityCollection on
// the SalesOrderDetail navigation property of the now attached detachedOrder.
foreach (SalesOrderDetail item in detachedItems)
{
currentContext.Attach(item);
detachedOrder.SalesOrderDetails.Attach(item);
}
}
注解
Attach 方法用于定义当两个对象已经存在于对象上下文中时两者之间的关系。 要附加已经定义了关系的对象或对象图,请对 Attach 调用 ObjectContext 方法。 要创建与源对象关联的新对象,请对 Add 调用 EntityCollection<TEntity> 方法。 有关详细信息,请参阅附加和分离对象。
如果 EntityCollection<TEntity> 已经加载对象,Attach 方法将把该对象与 EntityCollection<TEntity> 中的现有对象合并。
不假定附加的对象为相关实体对象的完整集。
与此 EntityCollection<TEntity> 关联的对象以及附加到它的所有对象必须处于 Unchanged 或 Modified 状态。
处于 Deleted 状态的对象只能在 ObjectStateManager 已经跟踪关系实例时附加。