我正在使用以下代码更新表: -
var dataUpd = (from A in ctx.tbl1
from B in ctx.tbl2
from C in ctx.tbl3
where A.CompanyId == B.CompanyId
&& A.ShiftId == B.ShiftCode
&& A.EmployeeId == C.EmployeeId
&& A.ShiftDate == C.Time_Date1
select new { A, B, C });
foreach (var row in dataUpd)
{
row.C.Time_Field1 = row.A.ShiftId;
row.C.Time_Field2 = row.B.Status.ToString();
}
ctx.SaveChanges();
我刚刚将ctx.tbl3
更改为这样的模型列表: -
public List<TO_TempInOut> listTempInOut = new List<TO_TempInOut>();
........ Changed in Query - listTempInOut is filled with data
from C in listTempInOut
给我错误: -
无法创建TO_TempInOut类型的常量值。在此上下文中仅支持原始类型或枚举类型。
如何解决此错误?
答案 0 :(得分:1)
你不能写一个Linq查询混合“基本类型或枚举” - (这意味着你的本地列表/枚举变量)和Sql表。因为不可能像这样进行连接。实体框架首先从您的代码创建一个SQL查询。
因此,使用上下文(数据库)变量或局部变量。您可以为此目的编写两个单独的查询。一个用于从数据库获取列表。然后再次使用“TO_TempInOut”列表过滤该列表。