SubmitChanges внутренне добавляет все поля как предложение where, как от него избавиться

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

context.SubmitChanges();

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

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

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


person Vijay Balkawade    schedule 13.04.2012    source источник
comment
Это вызывает серьезную проблему с производительностью: правда?? Почему? Или проблема с производительностью возникает из-за того, что linq-2-sql обновляет множество записей по одной.   -  person Pleun    schedule 13.04.2012
comment
10к само по себе не проблема. Вопрос в том, сколько вы обновляете за раз. Если вы одновременно обновляете большое количество записей, Linq2Sql — не лучший выбор с точки зрения производительности.   -  person Pleun    schedule 16.04.2012


Ответы (1)


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

person Eivind T    schedule 13.04.2012
comment
Я использую SQLMetal для создания классов. Пожалуйста, дайте мне знать, как я могу сделать то же самое с SQLMEtal. - person Vijay Balkawade; 13.04.2012
comment
Я видел класс, сгенерированный SQLMetal. Для некоторых столбцов это свойство задано, но не для всех. И для столбцов, для которых установлено это свойство, эти столбцы используются в операторе SET. - person Vijay Balkawade; 13.04.2012