共用方式為


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 Sales Model 新增至專案,並將項目設定為使用 Entity Framework。 若要這樣做,請完成 How to: Manually Configure an Entity Framework ProjectHow to: Manually Define the Model and Mapping Files中的程式。

本範例會載入 Contact 實體的相關 SalesOrderHeader 物件。

// 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 方法。 如需一對多關聯性,請在 EntityCollection<TEntity>上呼叫 Load 方法。 若為一對一關聯性,請在 EntityReference<TEntity>上呼叫 Load。 這會將相關的對象數據載入物件內容。 您可以使用 foreach 迴圈來列舉傳回結果的集合(在 Visual Basic 中為For Each...Next),並有條件地呼叫結果中每個實體的 EntityReference<TEntity>EntityCollection<TEntity> 屬性上的 Load 方法。

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

注意

當您在 foreach (C#) 或 For Each (Visual Basic) 列舉期間呼叫 Load 方法時,Object Services 會嘗試開啟新的數據讀取器。 除非您已在連接字串中指定 multipleactiveresultsets=true,否則這項作業將會失敗。 您也可以將查詢的結果載入至 List<T> 集合。 這會關閉數據讀取器,並可讓您列舉集合以載入參考的物件。

EntityCollection<TEntity>.Load 方法會與 EntityReference<TEntity>.Load 方法同步處理。

適用於