Entity Framework и время существования контекста объекта в ASP.NET MVC

Я использую Entity Framework в своем проекте, и у меня возникла проблема, заключающаяся в том, что, как только я передаю свои сущности в представление (имейте в виду, что эти сущности имеют лениво инициализированные объекты, такие как: Products.Owner, где владельцем является объект, который инициализируется лениво) я получаю исключение во время выполнения, сообщающее мне, что ObjectContext находится вне области видимости.

Теперь это имеет смысл, поскольку я получаю сущности из Сервиса с помощью оператора using (.... entity ...) {....}, что означает, что он удаляется при возврате результата.

Как бы мне обойти это и иметь объектный контекст, работающий от начала до конца. Спасибо.


person Community    schedule 09.11.2009    source источник


Ответы (1)


Один из вариантов - связать репозиторий с запросом, чтобы репозиторий реализовал IDisposable, а метод Dispose избавился от содержащегося в нем ObjectContext, вместо того, чтобы использовать более знакомый шаблон using внутри действий вашего контроллера.

person Alex James    schedule 09.11.2009
comment
Не могли бы вы предоставить пример кода того, что вы предлагаете? - person ; 09.11.2009
comment
Чтобы добавить к этому: Контроллер уже реализует IDisposable. Таким образом, вы можете обновить свой репозиторий в Controller.Initialize и удалить его в Controller.Dispose. Это поддерживает контекст при выполнении представления. - person Craig Stuntz; 09.11.2009