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 中繼資料 (Metadata) 定義關聯性。 如果概念結構描述中的關聯不支援這兩個型別之間的關聯性,就可能會發生這種情況。

備註

Attach 方法是用來在來源物件與相關物件的集合已經存在物件內容中時,定義物件與相關物件之集合之間的關聯性。 若要在已經定義關聯性的位置附加物件或物件圖形,請針對 Attach 呼叫 ObjectContext 方法。 若要建立與來源物件相關的新物件,請針對 Add 呼叫 EntityCollection<TEntity> 方法。 如需詳細資訊,請參閱連結和中斷連結物件

如果集合已經填滿或部分填滿,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 Sales Model。 若要執行此範例中的程式碼,您必須已經將 AdventureWorks Sales Model 加入到專案中,並設定您的專案使用 Entity Framework。 若要這樣做,請完成 如何:手動設定 Entity Framework 專案如何:手動定義模型和對應檔案中的程式。

本範例會將中斷連結SalesOrderDetail物件的集合和中斷連結SalesOrderHeader的物件附加至對象內容,然後定義物件與每個SalesOrderDetail對象之間的SalesOrderHeader關聯性。

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> 相關聯的物件以及附加至此物件的所有物件都必須處於 UnchangedModified 狀態中。

只有當 Deleted 已經在追蹤關聯性執行個體時,才能附加處於 ObjectStateManager 狀態中的物件。

適用於