Считается ли хорошей практикой использовать один ObjectContext для каждого запроса? Я читал, что эти объекты должны быть недолговечными и не очень дорогими для создания экземпляров, но делает ли это дело привлекательным для одного из них на запрос? Если да, есть ли шаблоны, которые правильно это реализуют?
Контекст объекта Entity Framework для каждого запроса в ASP.NET?
comment
Краткий ответ: да. Подробнее (шаблоны...): это веб-формы или MVC?
- person ken2k   schedule 14.05.2013
Ответы (1)
Да, это общепринятый подход к использованию ObjectContext/DbContext со временем жизни для каждого HttpRequest. Вот образец, который я предоставил в другом ответе.
Тем не менее, лучше оставить это управление жизненным циклом библиотеке IoC. Известные из них: Замок Виндзор, Autofac.
Обновление.
Чтобы избавиться от контекста, вы можете использовать метод 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();
}
}
person
Kamyar
schedule
14.05.2013
Кажется немного сложным использовать IOC с веб-формами. Поскольку у меня небольшое приложение, я думаю, что выберу решение, предложенное в образце, на который вы указали. Итак, есть ли способ принудительно удалить объект контекста области запроса после завершения запроса?
- person kfc; 15.05.2013
@kfc обновил мой ответ.
- person Kamyar; 15.05.2013