Как мне относиться к объектам контекста LINQ DB? - PullRequest
0 голосов
/ 02 февраля 2011

Лучше ли создать его один раз и оставить там, повторно использовать (возможно, из статического свойства) или создать его новым при каждом доступе к БД?

Ответы [ 4 ]

1 голос
/ 02 февраля 2011

Создайте новый для каждого доступа к базе данных. Также поместите это в оператор использования:

using (var db = new MyDatabase())
{
    // do query
}
1 голос
/ 02 февраля 2011

Обычно рекомендуется использовать шаблон Unit Of Work при работе с контекстом Entity (или LINQ to SQL).

Обычно это довольно просто, поскольку контекст завершает всю сложную работу. Все, что вам нужно сделать, это:

  1. Создать контекст.

  2. Выполнение всех операций, составляющих единицу работы.

  3. Зафиксируйте изменения (при необходимости). Вы можете откатиться в случае ошибки.

  4. Утилизация контекста.

0 голосов
/ 02 февраля 2011

Я бы также добавил, что способ обработки вашего DataContext будет зависеть от


а. Характер вашего приложения.
б. Бизнес-требования.

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

Однако, если ваше приложение запускается в процессе, который в высокой степени контролируется в части его выполнения и состояния (WinForms, WPF), и вы хотите, чтобы ваш datacontext работал в контексте UserSession (один единственный DataContext на пользователя на сеанс), вы можете связать его создание с моментом запуска приложения и утилизировать его, когда приложение должно быть выгружено. Вы также можете посмотреть на использование шаблона Singleton для этого.

0 голосов
/ 02 февраля 2011

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

Со своей стороны я отошлю васна ответ, который я дал на другой вопрос, в котором я расскажу о времени жизни L2S.

Как linq to sql работает с соединениями sql?

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