gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:42:18 27 4
gpt4 key购买 nike

我需要帮助重构这个生成大约 100 个更新语句的遗留 LINQ-SQL 代码。

我会继续寻找最佳解决方案,但希望能提供一些关于此问题的想法/过去的经验。

这是我的代码:

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()
}

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

.ToList() 正在触发查询以获取特定用户的所有 FooBars,然后针对每个 Foo 对象执行 UPDATE 语句更新 IsFoo 属性。

能否将上述代码重构为一个单独的UPDATE语句?

理想情况下,我唯一想要触发的 SQL 是下面的:

UPDATE FooBars
SET IsFoo = FALSE
WHERE UserId = 123

编辑

好的,看来不使用 db.ExecuteCommand 就无法完成。

呜……!

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

最佳答案

检查 DataClassesDataContext.ExecuteCommand...

关于c# - LINQ-SQL 在单个事务中更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2955391/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com