我正在尝试更新整个表以修改某些列并在其中存储另一个表的 Id。
以下代码在更新语句中失败,我不知道为什么。
db.gt_s_one
.GroupJoin(db.access_mode,
l => l.col3.Replace("auth.", "").ToUpper(),
am => am.code.ToUpper(),
(l, am) => new {
l,
am
}
)
.SelectMany(
x => x.am.DefaultIfEmpty(),
(x1, y1) => new {
gt = x1.l,
theAM = y1.id
}
)
.Update(db.GetTable<gt_s_one>(),
s => new gt_s_one
{
col1 = s.gt.col1,
col2 = s.gt.col2,
col3 = s.gt.col3.Replace("auth.", ""),
col4 = s.gt.col4,
col5 = s.gt.col3 == "empty" ? "1" : "0",
col6 = s.gt.col3 == "empty" ? "" : s.theAM.ToString()
}
);
我已经在 var 中隔离了第一部分(groupjoin 和 selectmany),并且执行它效果很好,但是当我执行更新部分时,我得到:
LinqToDB.SqlQuery.SqlException
HResult=0x80131500
Message=Table '[public].[access_mode]' not found.
Source=linq2db
在我的 SelectMany 中,我尝试将 y1 作为一个整体来代替 y1.id ,但这没有任何区别。