我需要帮助重新分解这个遗留的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查询语法.
| 归档时间: |
|
| 查看次数: |
4277 次 |
| 最近记录: |