EntityCollection<TEntity>.Load(MergeOption) 方法

定義

透過指定的合併選項將相關物件載入集合。

public:
 override void Load(System::Data::Objects::MergeOption mergeOption);
public override void Load(System.Data.Objects.MergeOption mergeOption);
override this.Load : System.Data.Objects.MergeOption -> unit
Public Overrides Sub Load (mergeOption As MergeOption)

參數

mergeOption
MergeOption

指定該集合中的物件如何與先前查詢 ObjectContext回傳的物件合併。

範例

此範例基於 Adventure Works 銷售模型。 要執行這個範例中的程式碼,你必須已經將 AdventureWorks 銷售模型加入你的專案,並設定專案使用實體框架。 為此,請完成 如何:手動配置實體框架 Project 以及 如何:手動定義模型與映射檔案中的步驟。

此範例載入該實體相關的SalesOrderHeaderContact物件。

// Specify the customer ID.
int contactID = 4332;

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    context.ContextOptions.LazyLoadingEnabled = false;

    // Get a specified customer by contact ID.
    var contact =
        (from c in context.Contacts
         where c.ContactID == contactID
         select c).First();

    // Load the orders for the customer explicitly.
    if (!contact.SalesOrderHeaders.IsLoaded)
    {
        contact.SalesOrderHeaders.Load();
    }

    foreach (SalesOrderHeader order in contact.SalesOrderHeaders)
    {
        // Load the items for the order if not already loaded.
        if (!order.SalesOrderDetails.IsLoaded)
        {
            order.SalesOrderDetails.Load();
        }

        Console.WriteLine(String.Format("PO Number: {0}",
            order.PurchaseOrderNumber));
        Console.WriteLine(String.Format("Order Date: {0}",
            order.OrderDate.ToString()));
        Console.WriteLine("Order items:");
        foreach (SalesOrderDetail item in order.SalesOrderDetails)
        {
            Console.WriteLine(String.Format("Product: {0} "
                + "Quantity: {1}", item.ProductID.ToString(),
                item.OrderQty.ToString()));
        }
    }
}

備註

此方法在載入集合前呼叫內部 RelatedEnd.ValidateLoad 方法,以驗證呼叫 的 Load 條件是否正確。 該 RelatedEnd.ValidateLoad 方法檢查:

當集合中的物件已經載入 ObjectContext時,該Load方法會強制執行參數所mergeOption指定的 。MergeOption 如需詳細資訊,請參閱 身分識別解析、狀態管理和變更追蹤

要明確載入相關物件,必須呼叫 Load 相關端由導航屬性回傳的方法。 若為一對多關係,將方法調用 LoadEntityCollection<TEntity>。 如果是一對一的關係,請聯絡LoadEntityReference<TEntity>。 這會將相關的對象數據載入物件內容。 你可以用 迴圈()來列舉回傳結果的集合,並對每個結果中的每個實體,條件性地呼叫 方法, 屬性。

Load方法會從資料來源載入相關物件,無論IsLoaded是否 。true

Note

當你在(LoadC#)或foreach(Visual Basic)列舉時呼叫該For Each方法,物件服務會嘗試開啟新的資料讀取器。 除非你在連接字串中指定 multipleactiveresultsets=true 多個活躍結果集,否則此操作會失敗。 你也可以將查詢結果載入 List<T> 一個集合。 這會關閉數據讀取器,並可讓您列舉集合以載入參考的物件。

EntityCollection<TEntity>.Load該方法與該EntityReference<TEntity>.Load方法同步。

適用於