Как явным образом загрузить сущности POCO (платформа Entity Framework)
Примеры в этом разделе показывают, как явным образом загрузить связанные объекты с помощью метода LoadProperty объекта ObjectContext. Пример использования отложенной загрузки для доступа к связанным объектам см. в разделе Как использовать отложенную загрузку для загрузки связанных объектов (платформа Entity Framework). Метод LoadProperty может использоваться с сущностями POCO и с сущностями, производными от EntityObject.
В примерах из этого раздела используются классы данных POCO, определенные в разделе Как определить сущности POCO (платформа Entity Framework), класс AdventureWorksEntities (производный от ObjectContext), созданный в разделе Как определить контекст пользовательского объекта (платформа Entity Framework), и модель данных на основе AdventureWorks, определенная в разделе Как настроить файлы моделирования и сопоставления для работы с пользовательскими объектами (платформа Entity Framework).
Пример
Этот пример возвращает первые пять объектов Order
и вызывает метод LoadProperty для явной загрузки связанных объектов LineItem
для каждого из объектов Order
.
Using context As New POCOAdventureWorksEntities()
Try
' Disable lazy loading.
context.ContextOptions.LazyLoadingEnabled = False
' Get the first five orders.
For Each order As Order In context.Orders.Take(5)
' Because LazyLoadingEnabled is set to false,
' we need to explicitly load the related line items for the order.
context.LoadProperty(order, "LineItems")
Console.WriteLine(String.Format("PO Number: {0}", order.ExtendedInfo.PurchaseOrderNumber))
Console.WriteLine(String.Format("Order Date: {0}", order.OrderDate.ToString()))
Console.WriteLine("Order items:")
For Each item As LineItem In order.LineItems
Console.WriteLine(String.Format("Product: {0} " & "Quantity: {1}", item.ProductID, item.OrderQty))
Next
Next
Catch ex As InvalidOperationException
Console.WriteLine(ex.Message)
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
End Using
using (POCOAdventureWorksEntities context =
new POCOAdventureWorksEntities())
{
try
{
// Disable lazy loading.
context.ContextOptions.LazyLoadingEnabled = false;
// Get the first five orders.
foreach (Order order in context.Orders.Take(5))
{
// Because LazyLoadingEnabled is set to false,
// we need to explicitly load the related line items for the order.
context.LoadProperty(order, "LineItems");
Console.WriteLine(String.Format("PO Number: {0}",
order.ExtendedInfo.PurchaseOrderNumber));
Console.WriteLine(String.Format("Order Date: {0}",
order.OrderDate.ToString()));
Console.WriteLine("Order items:");
foreach (LineItem item in order.LineItems)
{
Console.WriteLine(String.Format("Product: {0} "
+ "Quantity: {1}", item.ProductID,
item.OrderQty));
}
}
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.Message);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
См. также
Основные понятия
Загрузка связанных сущностей POCO (платформа Entity Framework)
Настройка объектов (платформа Entity Framework)
Работа с сущностями POCO (платформа Entity Framework)