2010-08-26 3 views
1

Использование Linq To Sql/Entities мы имеем достаточную гибкость для написания запросов на выборкуFlexiable обновления в Linq To Sql

А как насчет обновления запросов.

Что делать, если мне нужно сделать что-то простое, как что:

UPDATE suppliers
SET supplier_name = (SELECT customers.name FROM customers WHERE customers.customer_id = suppliers.supplier_id)

Использование Linq для Sql мне нужно запустить много запросов обновления, чтобы получить ти сделано. Сначала мне нужно выбрать объект, который мне нужно обновить, а затем мне нужно обновить каждый из них, швы будут очень медленными.

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

+0

У меня пока нет возможности редактировать вопросы, поэтому я предлагаю это как предложение ... Если вы обновите заголовок вопроса до «Linq to SQL Batch Updates», вы можете получить больше ответов. :) – Peter

ответ

0

Для пакетных операций, подобных этому, я бы пошел прямо на SQL. В LINQ to SQL вы можете использовать для этого DataContext.ExecuteCommand(). Например:

db.ExecuteCommand("UPDATE suppliers SET supplier_name = (SELECT customers.name FROM customers WHERE customers.customer_id = suppliers.supplier_id)"); 

Если вы считаете, что встроенный SQL зло, взгляните на this post by Terry Aney о включении пакетных обновлений и удалений в LINQ к SQL. У меня нет опыта с этим, но он выглядит интересным.

+0

Inline sql is evil. Очень плохо, что нет синтаксиса Linq для обновления. Я смотрю что-то вроде этого http://www.hookedonlinq.com/UpdateOperator.ashx, но похоже, что для Linq to SQL он не существует, дизайн не позволяет иметь такую ​​операцию. – Juk

+0

Я обновил свой ответ ссылкой на другое возможное решение. – Peter

1

Возможно, вы захотите зарегистрироваться PLINQO. Он добавил пакетные обновления/удаления плюс еще больше для LINQ to SQL.