Шаблон наилучшего использования для DataContext

StackOverflow https://stackoverflow.com/questions/33390

  •  09-06-2019
  •  | 
  •  

Вопрос

Какая модель на весь срок службы лучше всего подходит для DataContext?Должен ли я просто создавать новый, когда мне это нужно (иначе говоря, на уровне функций), должен ли я сохранять один доступный в каждом классе, который будет его использовать (уровень класса), или я должен создать статический класс со статическим DataContext (уровень домена приложения)?Существуют ли какие-либо обдуманные рекомендации по этому поводу?

Это было полезно?

Решение

Вам в значительной степени необходимо поддерживать один и тот же контекст данных доступным на протяжении всего срока службы операций, которые вы хотите выполнить, если вы когда-либо собираетесь сохранять изменения, которые должны быть .SubmitChanges()сделаю позже, так как в противном случае вы потеряете эти изменения.

Если вы просто запрашиваете материалы, то можно создавать их по мере необходимости, но затем, если позже вы захотите .SubmitChanges() вам придется часто проводить рефакторинг своего кода, так что вы также можете перенять шаблон эффективного сохранения datacontext глобальный характер для всего вашего приложения с самого начала.

Обратите внимание, что контекст данных является отключенный.Соединение устанавливается только тогда, когда данные запроса перечисленный (не при первом запуске запроса, это "ленивый" тип данных, поэтому предоставляет данные только тогда, когда это необходимо), а затем сразу после этого закрывается.Вкл . .SubmitChanges() соединение открывается для отправки изменений, а затем сразу же закрывается.Так что не думайте, что сохраняете datacontext вокруг сохраняет соединение открытым, это не так (вы можете подключить StateChange событие подключения, чтобы подтвердить это для себя, вот в чем я уверен).

На сайте есть отличная статья Блог Рика Страла который подробно освещает эту тему, гораздо больше, чем дает мой ответ здесь!!

Другие советы

Я думаю, Джефф Этвуд говорил об этом в Подкаст " Пастуший код", когда его допрашивали точно о том же самом.Послушайте его в течение последних 15-20 минут или около того.

Я думаю, что в SO datacontext создается в классе Controller.Не уверен во многих деталях здесь.Но именно так это и выглядело.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top