我需要帮助重新分解这个遗留的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查询语法。
答案 0 :(得分:2)
检查DataClassesDataContext.ExecuteCommand ...