2

Считается ли хорошей практикой использование единого объекта ObjectContext для запроса? Я читал, что эти объекты должны быть недолговечными и не слишком дорогостоящими для создания экземпляра, но делает ли это обращение к одному из них по запросу? Если да, есть ли какие-либо шаблоны, которые должным образом реализуют это?Entity Framework Объект Контекст на запрос в ASP.NET?

+1

Короткий ответ: да. Для получения дополнительной информации (шаблоны ...): это веб-формы или MVC? – ken2k

+0

отлично! Это webforms – kfc

ответ

5

Да, это общепринятый подход, чтобы иметь ObjectContext/DbContext с продолжительностью жизни на HttpRequest. Here's a sample Я привел в другом ответе.

Как бы то ни было, лучше оставить эти пожизненные управления библиотекой IoC. Известными являются Castle Windsor, Autofac.

Update:
Распоряжаться свой контекст, вы можете использовать метод Application_EndRequest в Global.asax. Следующий код не проверен, но вы получите эту идею:

protected virtual void Application_EndRequest() 
{ 
    var key = "MyDb_" + HttpContext.Current.GetHashCode().ToString("x") 
         + Thread.CurrentContext.ContextID.ToString(); 
    var context = HttpContext.Current.Items[key] as MyDbContext; 

    if (context != null) 
    { 
     context.Dispose(); 
    } 
} 
+0

Кажется, немного сложно использовать IOC с веб-формами. Поскольку у меня небольшое приложение, я думаю, что я пойду с решением, предложенным в примере, на который вы указали. так теперь, есть ли способ принудительно избавиться от объекта контекста с запросом, как только запрос будет прекращен? – kfc

+0

@kfc обновил мой ответ. – Kamyar

Смежные вопросы