Entity Framework 4: инкапсулируйте свойства навигации в бизнес-объектах - PullRequest
1 голос
/ 23 марта 2011

Я хочу инкапсулировать все сущности EF в бизнес-объекты.У EF-объекта «Инвестиции» будет бизнес-объект «BoInvestment», который содержит внутреннюю сущность и направляет все свойства.Для навигационных свойств это проблема.Допустим, в моих «Инвестициях» есть «Отчеты», а в EntityCollection загружены ленивые.Моему бизнес-объекту «BoInvestment» понадобятся эти «Отчеты» как «BoReports», поскольку «Отчет» также инкапсулирован в бизнес-объект.Если бы я просто возвратил «IList», это означало бы, что все отчеты всегда загружаются в память.Я бы потерял преимущество EF в том, что EntityCollection является только Querable, пока он не материализован.

Любые идеи:)

Ответы [ 2 ]

1 голос
/ 23 марта 2011

Идея состоит в том, чтобы использовать сущности непосредственно как бизнес-объекты, а не помещать их в новый объектный слой.Это будет работать намного лучше, если вы будете использовать POCO вместо объектов Entity.Если вы хотите придерживаться своей текущей архитектуры, проверьте Lazy<T> - msdn .Это может быть способом реализации ваших свойств навигации на бизнес-объектах.

0 голосов
/ 23 марта 2011

Почему бы не использовать IQueryable? Таким образом, вы по-прежнему будете иметь преимущество в составлении запросов и отложенной загрузке.

Другая идея состоит в том, чтобы воспользоваться тем фактом, что объекты сущностей, сгенерированные EF, на самом деле являются частичными классами, которые вы можете расширить, включив в них свою функциональность BO

...