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