EntityCollection<TEntity>.Attach 方法

定义

定义对象上下文中两个附加对象之间的关系。

重载

名称 说明
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 或未处于 UnchangedModified 状态。

-或-

不能基于 EDM 元数据定义关系。 当概念架构中的关联不支持这两种类型之间的关系时,可能会发生这种情况。

注解

当源对象和相关对象的集合都存在于对象上下文中时,该方法 Attach 用于定义相关对象与相关对象的集合之间的关系。 若要附加已定义关系的对象或对象图,请对该方法Attach调用ObjectContext该方法。 若要创建与源对象相关的新对象,请在 <a0/> 上调用该方法。 有关详细信息,请参阅附加和分离对象

如果集合已填充或部分填充,该方法会将 Attach 现有实体与给定实体合并。 假定给定实体不是相关实体的完整集。

传入的所有实体都必须处于 UnchangedModified 处于状态。 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

要附加的对象。

例外

当为 entitynull.

entity当无法与源对象相关时。 当概念架构中的关联不支持这两种类型之间的关系时,可能会发生这种情况。

-或-

当任一对象处于 null 或未处于 UnchangedModified 状态时。

示例

此示例基于 Adventure Works 销售模型。 若要运行此示例中的代码,必须将 AdventureWorks 销售模型添加到项目中,并将项目配置为使用 Entity Framework。 为此,请完成 如何:手动配置 Entity Framework Project如何:手动定义模型和映射文件

本示例将分离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该方法。 若要创建与源对象相关的新对象,请在 <a0/> 上调用该方法。 有关详细信息,请参阅附加和分离对象

EntityCollection<TEntity>如果已加载对象,该方法Attach会将对象与其中的现有对象合并在一EntityCollection<TEntity>起。

不假定附加对象是相关实体对象的完整集。

与此对象 EntityCollection<TEntity> 关联的对象以及附加到它的所有对象必须处于 UnchangedModified 状态。

Deleted仅当已跟踪关系实例时ObjectStateManager,才能附加处于状态的对象。

适用于