Myślę, że byłoby mądrze ustawić kontekst obiektu Entity w Application_BeginRequest, zapisać go w Request.items, użyć go w całym żądaniu i zutylizować w Application_EndRequest. W ten sposób kontekst jest zawsze dostępny i mogę poruszać się po wykresie obiektu Entity Framework w moich widokach, leniwie ładując to, czego jeszcze nie byłem chętny.ASP.NET MVC z Entity Framework
Myślę, że byłoby to jak rozwój na Ruby on Rails.
Być może powinienem być strzał do mówienia taką herezję, ale to jest tak szalony, że po prostu może pracować :)
nie mogę Application_BeginRequest i ..EndRequest ognia na ASP.NET MVC chociaż. Czy oni nie zostali zwolnieni? Jakieś specjalne sztuczki, które muszę zrobić?
Nie, to złe podejście. To sprawia, że kontroler jest trudny do testowania, a także oznacza, że jednostka pracy nie jest dostępna poza kontrolerem. Wzorzec Session-per-request wymieniony poniżej jest lepszy. EF v1 obsługuje leniwe ładowanie - po prostu musi być wyraźne. –
Myślę, że źle rozumiesz, co oznacza "leniwe ładowanie". EF pozwala automatycznie ładować relacje, ale nie leniwie. Co do testowalności, zgadzam się, że bezpośrednie zużycie kontekstu obiektu szkodzi testowalności, ale to nie ma nic wspólnego z użyciem ctor/dispose. –
LOL dude. To musi być "wyraźne" http://blogs.msdn.com/jkowalski/archive/2008/05/12/transparent-lazy-loading-for-entity-framework-part-1.aspx –