Я использую контейнер IOC Spring.NET в своем приложении ASP.NET MVC 4. Каждый контроллер получать DataContext EF из контейнера:Spring.NET IOC/MVC - контекст базы данных
private readonly IDBContext db =
(IDBContext) ApplicationHelper.ApplicationContext.GetObject("DatabaseContext");
Я scaffolded контроллеры, и по умолчанию они реализуют IDisposable интерфейс, в котором соединение DB расположена - как это:
protected override void Dispose(bool disposing)
{
this.db.Dispose();
base.Dispose(disposing);
}
Это нормально - я хотел бы сохранить его таким образом. Однако второй контроллер, который вызывается, дает исключение, указав, что контекст базы данных удален.
Итак - что бы я хотел сделать, это проверить контейнер контейнера IOC, если объект был удален, когда следующий контроллер вызывает метод GetObject()
. Возможно ли это, или я должен изменить свой дизайн?
Sweet - место сверху ответ. Благодаря! Я добавил scope = "request" и удалит все строительные леса, и это сработает! –