【问题标题】:Unable to create a constant value of type {x}无法创建 {x} 类型的常量值
【发布时间】:2016-03-22 05:46:03
【问题描述】:

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

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

如何解决这个错误?

【问题讨论】:

  • TO_TempInOut 类型。我们正在使用 sql 表加入列表。
  • 以前我在 sql 表中更新。现在我需要更新列表TO_TempInOut
  • @Anup LINQ 不会 更新任何东西。它只是一种查询语言。您可能对 LINQ 的 SaveChanges 之类的实体框架调用感到困惑。发布实际产生错误的代码,而不是您认为正在做同样事情的 EF 代码
  • @Anup 顺便说一句,您无法将列表与表格连接起来。请贴出实际代码,没有任何线索是不可能提供帮助的。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    相关资源
    最近更新 更多