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

时间:2010-06-02 06:13:40

标签: 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()
}

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

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

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

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

UPDATE FooBars
SET    IsFoo = FALSE
WHERE  UserId = 123

修改

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

格儿...!

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

1 个答案:

答案 0 :(得分:2)

检查DataClassesDataContext.ExecuteCommand ...