2017-01-08 2 views
0

Я обрабатываю необработанные исключения с помощью глобального обработчика исключений. Когда необработанное исключение возникает во время обработки запроса, является ли метод удаления контроллера? (Как в MVC, так и в Web API?)Контроллер и Dbcontext Dispose

Например, я пытаюсь использовать один и тот же EF-файл в течение всего запроса. Безопасно ли использовать этот базовый класс:

public abstract class BaseController : Controller 
{ 
    public BaseController() 
    { 
     Database = new DatabaseContext(); 
    } 

    protected DatabaseContext Database { get; set; } 

    protected override void Dispose(bool disposing) 
    { 
     Database.Dispose(); 
     base.Dispose(disposing); 
    } 

}

+0

Если у вас есть сложные жизненные циклы и вам нужно нарисовать 'DbContext', вы должны проверить https://github.com/mehdime/DbContextScope свой чрезвычайно мощный и довольно легкий, но сложный, поэтому вам нужен прецедент. Тем не менее, просто чтение фона, ведущего к развитию библиотеки, является просвещением по этой теме. –

ответ

0

поздний ответ, но .. я не уверен кастрированный баран или не выбрасывайте гарантированно работать во всех случаях края. НО вам должно быть легко протестировать ваш сценарий.

Сказанное говорит о том, что на самом деле не критично использовать ваш dbcontext. Принцип АА должен делать это как хорошая практика. Но, как указано в сообщении блога Jon Gallants here, это не обязательно в соответствии с MS dev. Поэтому это, скорее всего, не имеет значения, ЕСЛИ, в некоторых редких случаях ваш dbcontext не был удален.

Помимо этого я считаю, что он должен быть безопасным для вас, если вы уважаете границы своего контекста. I.E не запускает операции в paralell в другом потоке в запросе, который использует этот экземпляр контекста, например.

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