ASP.NET MVC с Entity Framework - PullRequest
       22

ASP.NET MVC с Entity Framework

6 голосов
/ 11 ноября 2008

Я думаю, что было бы разумно настроить контекст объекта Entity в Application_BeginRequest, сохранить его в Request.items, использовать его в запросе и располагать в Application_EndRequest. Таким образом, контекст всегда доступен, и я могу перемещаться по графу объектов Entity Framework в своих представлениях, лениво загружая то, что я еще не стремился получить.

Я думаю, это будет похоже на разработку на Ruby on Rails .

Может быть, меня застрелили за то, что я говорил такую ​​ересь, но это так безумие, что это может сработать :)

Я не могу заставить Application_BeginRequest и ..EndRequest запускаться на ASP.NET MVC . Разве они не уволены? Какой-нибудь особенный трюк, который мне нужно сделать?

Ответы [ 2 ]

6 голосов
/ 11 ноября 2008

Контекст объекта в EF, как и контекст данных в L2S, задуман как «единица работы», они не поточнобезопасны и не рассчитаны на долгую жизнь.

В MVC лучшая стратегия состоит в том, чтобы создать его в конструкторе контроллера (неявно или явно, не имеет значения) и затем утилизировать его в методе Dispose. Конечно, EF не выполняет ленивую загрузку, поэтому вам придется найти свой собственный способ быть ленивым. :)

5 голосов
/ 30 марта 2009

Сборка 1.0 ASP.NET MVC позволяет мне подключать обработчики событий как на beginrequest, так и на endrequest, обновляя SessionScope и сохраняя его в HttpContext.Items в beginrequest (я переключился на Castle ActiveRecord) и в endrequest выбираю sessioncope из HttpContext.Items и распоряжаться им. Это позволяет выполнять отложенную загрузку в течение всего жизненного цикла запроса. (может даже перемещаться по графу объектов в представлениях.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...