MVC DataContext Хорошо, чтобы поделиться одним соединением или нет - PullRequest
0 голосов
/ 13 января 2009

Когда «единица работы» больше не является «единицей»? Какой сценарий лучше по ресурсам? Первый создает одно соединение, а второй создает 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.}
                      )
}

OR

using (DataContext dc=new DataContext) 
{
  var orders= from o in dc.orders 
              select ( new Product {  property a = GetPropertyA(), 
                                      property b = GetPropertyB(),
                                      property c = GetPropertyC()}
                      )
}

Ответы [ 2 ]

2 голосов
/ 13 января 2009

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

1 голос
/ 13 января 2009

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

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