无法创建{x}类型的常量值

时间:2015-10-12 12:41:34

标签: c# asp.net-mvc entity-framework linq

我正在使用以下代码更新表: -

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类型的常量值。在此上下文中仅支持原始类型或枚举类型。

如何解决此错误?

1 个答案:

答案 0 :(得分:1)

你不能写一个Linq查询混合“基本类型或枚举” - (这意味着你的本地列表/枚举变量)和Sql表。因为不可能像这样进行连接。实体框架首先从您的代码创建一个SQL查询。

因此,使用上下文(数据库)变量或局部变量。您可以为此目的编写两个单独的查询。一个用于从数据库获取列表。然后再次使用“TO_TempInOut”列表过滤该列表。