MVC DataContext Можно использовать одно соединение или нет

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

  •  22-07-2019
  •  | 
  •  

Вопрос

Когда «единица работы» перестает быть «единицей»?Какой сценарий лучше с точки зрения ресурсов?Первый создает одно соединение, а второй создает 4.

using (DataContext dc=new DataContext) 
{
  var orders= from o in dc.orders 
              select ( new Product {  property a= from a in ..join... select x, 
                                      property b= from b in ..join... select y,
                                      property c= from c in ..join... select z.}
                      )
}

ИЛИ

using (DataContext dc=new DataContext) 
{
  var orders= from o in dc.orders 
              select ( new Product {  property a = GetPropertyA(), 
                                      property b = GetPropertyB(),
                                      property c = GetPropertyC()}
                      )
}
Это было полезно?

Решение

Если при использовании LINQ вы добавляете один объект к другому, и они используют другой контекст данных, вы получите ошибку.Я бы предложил сохранять один и тот же контекст данных для каждой используемой вами единицы работы.Вы можете легко определить обрабатываемую единицу работы, используя шаблон репозитория для записи классов доступа к данным.Если вам не совсем понятен шаблон репозитория, проверьте эту запись

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

Вообще говоря, чем меньше обращений к вашей базе данных, тем лучше.Однако в крупномасштабных приложениях мы часто делаем наши базы данных все более и более «тупыми», поэтому в конечном итоге мы не выполняем никаких соединений и не нагружаем процессор и память на сервере базы данных SQL.Это действительно зависит от того, какие ресурсы вы считаете более дефицитными.Если на вашем SQL-сервере достаточно ресурсов, выполните соединение там, в противном случае было бы лучше вернуть его отдельно.Вы смотрели на результаты этого в профилировщике SQL?Вы уверены, что это 4 соединения или просто 4 отдельных звонка?

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