Можно ли загрузить объект, исключая некоторые свойства? Одно из свойств этого объекта дорого выбирать. Я хотел бы лениво загрузить эту собственность. Возможно ли это?
Entity Framework 4 выборочно ленивые свойства загрузки
Ответ 1
Теперь, когда вы прочитали все ответы, я дам вам правильный ответ. EF не поддерживает ленивую загрузку свойств. Однако это поддерживает гораздо более сильную концепцию, чем это. Это называется разбиением таблиц, где вы можете сопоставить таблицу с двумя объектами. Скажем, таблица продуктов в базе данных может быть сопоставлена с объектом продукта и объектом ProductDetail. Затем вы можете переместить дорогостоящие поля в объект ProductDetail, а затем создать ассоциацию 1..1 между prodcut и productdetail. После этого вы можете ленить загрузку соединения productdetail только тогда, когда вам это нужно. В моей главе исполнения моей книги у меня есть рецепт. 13-9. Перемещение дорогостоящего имущества другому объекту
Надеюсь, что это поможет!
Ответ 2
Со скалярным свойством единственный способ выборочно не загружать определенное свойство - проект в ESQL или L2E:
var q = from p in Context.People
select new
{
Id = p.Id,
Name = p.Name // note no Biography
};
+1 Дэн; делать это лениво хуже, чем загружать его вперед. Если вы хотите контролировать загрузку, будьте явными.
Ответ 3
стимулы правильные, но будьте осторожны при использовании ленивой загрузки. У вас могут быть проблемы с производительностью, и вы не понимаете, что свойство загружается в определенном месте вашего кода. Это связано с тем, что он загружает данные, когда вы используете свойство
Я предпочитаю использовать явную загрузку. Таким образом, вы знаете, когда они загружаются и где. Здесь ссылка, которая дает пример для LoadProperty http://sankarsan.wordpress.com/2010/05/09/ado-net-entity-framework-data-loading-part-2/
Вы также можете использовать Eager Loading с помощью метода Include. Пример здесь: http://wildermuth.com/2008/12/28/Caution_when_Eager_Loading_in_the_Entity_Framework