Шаблон наилучшего использования для DataContext - PullRequest
3 голосов
/ 29 августа 2008

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

Ответы [ 2 ]

5 голосов
/ 29 августа 2008

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

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

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

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

0 голосов
/ 29 августа 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...