Версия Linq-to-SQL собирается SELECT
в каждой строке таблицы details
, которая соответствует запросу, извлекает их в память и создает для них объекты. Затем, когда он применяет обновления, он будет использовать отдельный оператор UPDATE
для каждого объекта и будет включать (по умолчанию) предложение WHERE
, которое проверяет значение каждого столбца, чтобы убедиться, что оно не изменилось с тех пор, как вы это сделали. SELECT
. Если строка изменилась, Linq выдаст исключение.
Версия кода на Linq будет НАМНОГО медленнее (например, в 100 или 1000 раз медленнее) и предоставит вам дополнительные исключения.
Версия SQL может быть немного сложнее поддерживать в процессе рефакторинга кода в будущем, но это сильно изменит вашу базу данных.
Обычно я чувствую, что Linq-to-SQL отлично подходит для выборок и отдельных обновлений, и, возможно, для небольших партий база данных будет достаточно быстрой, чтобы дополнительные запросы не создавали проблем, но мне нужно было бы тщательно подумать, прежде чем я использовал Linq для больших партий или на веб-сервере.