Использование .Include()
, как и многие другие, предлагает отличный способ добиться того, что вам нужно.
Однако иногда вам может потребоваться «перезагрузить» что-то позже, если вы не включили «или», или что вам нужно только иногда, поэтому включение оператора Include может быть пустой тратой вычислительных циклов во многих случаях ,
В случае особых отношений, таких как «Product.Category» (где Product.Category является вашим навигационным свойством от продукта к категории), вы, скорее всего, также имеете элемент «Product.CategoryReference». Вы можете проверить, что, чтобы увидеть, если он загружен или нет, и если нет, то вы можете загрузить его «по требованию»:
if(!Product.CategoryReference.IsLoaded)
{
Product.CategoryReference.Load();
}
Теперь ваша ссылка «Категория» должен быть в памяти и готовы к использованию.
Если у вас есть свойство навигации, которая ссылается на коллекцию вещей (например, «Части» для продукта), вы можете сделать то же самое, непосредственно на свойства навигации:
if(!Product.Parts.IsLoaded)
{
Product.Parts.Load();
}
Это может быть полезную технику для «загрузки по требованию» свойств навигации для одного или коллекционного типа, если вы не включили их в свой запрос EF.
Марк
Вот пример того, как Im загружает данные: Возможно, я должен был упомянуть, что я кодирую это для приложения silverlight. И это через службу доменов. RTIPricingContext _context = new RTIPricingContext(); LoadOperation op = _context.Load (context.GetPurchaseOrderQuery(), PurchaseOrdersLoadedCallback, null); частная пустота PurchaseOrdersLoadedCallback (LoadOperation ло) { IEnumerable ро = lo.Entities.Where (ш => w.UserID == SelectedUser.ID); // Это сборник, который мне нужно заполнить подклассы. –
Jukeman