问题描述
如何在没有 get 的情况下更新 Linq2db 中的两列。 示例:在 sql server 命令中
Update teachers
set Candidatetotal= (Select count(1) from Candidates where TeacherId = 1)
如何转换为 LINQ2DB 查询? 不要使用 sql 命令。
解决方法
要更新多个列,您必须多次重复 Set
运算符:
db.GetTable<Teacher>()
.Where(t => t.Id == 1)
.Set(t => t.CandidateTotal,t => db.GetTable<Candidate>().Where(c => c.TeacherId == t.Id).Count())
.Set(t => t.IsUpToDate,t => true)
.Update();
它生成以下 SQL:
UPDATE
[Teacher]
SET
[CandidateTotal] = (
SELECT
Count(*)
FROM
[Candidate] [c_1]
WHERE
[c_1].[TeacherId] = [Teacher].[Id]
),[IsUpToDate] = 1
WHERE
[Teacher].[Id] = 1