如何更新 linq2db 中的两列?

问题描述

如何在没有 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