Подтвердить что ты не робот

Entity Framework 4 выборочно ленивые свойства загрузки

Можно ли загрузить объект, исключая некоторые свойства? Одно из свойств этого объекта дорого выбирать. Я хотел бы лениво загрузить эту собственность. Возможно ли это?

4b9b3361

Ответ 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