Эта тема обсуждалась довольно часто, и вам следует прочитать эту статью об управлении временем жизни DataContext. Короткий ответ: DataContext
предназначен для использования в качестве единицы работы, обычно одного запроса. Объекты DataContext дешевы в создании, и для их создания не требуются дополнительные ресурсы базы данных.
Основная причина избегать общего экземпляра DataContext
заключается в безопасности потоков и отслеживании изменений. Каждое изменение, которое вы вносите в объект репозитория, захватывается и транслируется в операции обновления / вставки / удаления при вызове SubmitChanges()
. Эта функция выходит из строя при использовании одного объекта DataContext
.