LINQ-SQL在单个事务中更新多行

RPM*_*984 5 c# linq-to-sql

我需要帮助重新分解这个遗留的LINQ-SQL代码,该代码生成大约100个更新语句.

我会继续玩最好的解决方案,但是会很感激这个问题的一些想法/过去的经验.

这是我的代码:

List<Foo> foos;
int userId = 123;

using (DataClassesDataContext db = new FooDatabase())
{
     foos = (from f in db.FooBars
             where f.UserId = userId
             select f).ToList();

     foreach (FooBar fooBar in foos)
     {
         fooBar.IsFoo = false;
     }

     db.SubmitChanges()
}
Run Code Online (Sandbox Code Playgroud)

基本上我想要将IsFoo具有特定UserId值的所有记录的字段更新为false .

发生的事情是.ToList()触发查询以获取FooBars特定用户的所有内容,然后对于每个Foo对象,执行UPDATE更新IsFoo属性的语句.

上面的代码可以重新计算到一个单一的UPDATE语句吗?

理想情况下,我想要解雇的唯一SQL如下:

UPDATE FooBars
SET    IsFoo = FALSE
WHERE  UserId = 123
Run Code Online (Sandbox Code Playgroud)

编辑

好的,所以看起来不能使用db.ExecuteCommand.

格儿...!

我最终可能会做的是为DLINQ命名空间创建另一个扩展方法.仍然需要一些硬编码(即写"WHERE"和"UPDATE"),但至少它隐藏了大部分实现细节,远离实际的LINQ查询语法.

Mar*_*rko 2

检查 DataClassesDataContext.ExecuteCommand...