2012-04-13 1 views
4

У меня есть таблица в базе данных с первичным ключом, скажем emp_pk. Теперь, используя LINQ, я пытаюсь выполнить некоторые операции над ним. Когда я изменить некоторые свойства и вызов,SubmitChanges внутренне добавляет все поля как предложение where, как избавиться от него

context.SubmitChanges(); 

в идеале где положение должно содержать where emp_pk = value.

Но когда я просматриваю запрос из профилировщика SQL, я вижу множество условий в where where, которые, как мне кажется, генерируются движком LINQ. Это вызывает серьезную проблему с производительностью.

Может ли кто-нибудь помочь мне в этом случае, чтобы оптимизировать запрос?

+0

Это вызывает серьезную проблему с производительностью: действительно? Почему? Или проблема с производительностью, созданная linq-2-sql, обновляющая множество записей по одному. – Pleun

+0

10k сам по себе не проблема. Вопрос в том, сколько вы обновляете за раз. Если вы обновляете большое количество записей в то же время Linq2Sql - это не лучший выбор производительности – Pleun

ответ

6

Это потому, что оптимизированная проверка параллелизма включена. Вы можете отключить его для каждого столбца, установив Update Check = никогда за столбец в дизайнере dbml

+0

Я использую SQLMetal для генерации классов. Пожалуйста, дайте мне знать, как я могу сделать то же самое с SQLMEtal. –

+0

Я видел класс, сгенерированный SQLMetal. Для некоторых столбцов это свойство задано, но не для всех. А для столбцов, где установлено это свойство, эти столбцы используются в инструкции SET. –