Entity Framework: обновить несколько строк в наборе данными из другого набора

Я просто хочу достичь этой строки SQL:

UPDATE table1
SET table1.col = table2.col
FROM table2 INNER JOIN
     table1 ON table2.id = table1.id

Как это можно сделать с помощью Entity Framework с минимальным количеством циклов приема-передачи? Все, о чем я могу думать, - это использовать foreach для циклического перебора table2 и обновления соответствующей записи table1, но это приводит к большому количеству циклов туда и обратно, не так ли?

Ответов (2)

Решение

К сожалению, в настоящее время в Entity SQL нет ОБНОВЛЕНИЯ . Обходной путь - использовать обычный SQL . Без этого сократите количество циклов обработки до минимума, загрузив все необходимые строки из обеих таблиц одновременно и вызывая SaveChanges как можно меньше раз.

Как сказал Крейг, в ​​EF нет встроенной поддержки нескольких объектов, но вы можете создать свой собственный или использовать следующую ссылку в качестве ссылки.

http://geeks.ms/blogs/unai/archive/2008/07/17/multiple-entity-updates-with-entity-framework-ef-fetch-updates.aspx

http://efe.codeplex.com/

Оба используют одну и ту же логику, но efe предоставляет оболочку и некоторые дополнительные функции. В основном чистый код. (Как это!). Я надеюсь, это поможет.

Санджай Залке