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