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 中繼資料 (Metadata) 定義關聯性。 如果概念結構描述中的關聯不支援這兩個型別之間的關聯性,就可能會發生這種情況。
備註
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 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> 相關聯的物件以及附加至此物件的所有物件都必須處於 Unchanged 或 Modified 狀態中。
只有當 Deleted 已經在追蹤關聯性執行個體時,才能附加處於 ObjectStateManager 狀態中的物件。