【问题标题】:Entity Framework is throwing an error "Unable to evaluate the expression. Operation not supported. Unknown error: 0x80070057."实体框架抛出错误“无法评估表达式。不支持操作。未知错误:0x80070057。”
【发布时间】:2016-07-02 09:47:11
【问题描述】:

我正在使用实体框架来获取数据库数据。我编写了一个以 JSON 格式返回表数据的操作,如下所示:

public JsonResult GetEmployeesData()
{
     using (TrainingDBEntities db = new TrainingDBEntities())
     {
           return new JsonResult { Data = db.Employees, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
     }
}

它没有抛出任何异常。但是出现控制台错误,错误代码为:500。当我调试时,它显示错误

函数求值需要所有线程运行

当我尝试重新加载时,出现新错误:

无法计算表达式。不支持操作。未知错误:0x80070057

我不知道这段代码有什么问题?

【问题讨论】:

  • 你能分享完整的例外文本吗?堆栈跟踪?无论如何,我认为这是与 EF 的延迟加载有关的问题。因此,您可以尝试将Data = db.Employees 替换为Data = db.Employees.ToList() 以强制EF 加载实体。
  • 如果在项目属性中启用了“优化代码”,这可能是导致错误的原因之一。禁用(取消选中)它。

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


【解决方案1】:

解决办法是:

public JsonResult GetEmployeesData()
{
     using (TrainingDBEntities db = new TrainingDBEntities())
     {
           var emps = db.Employees.ToList();
           return new JsonResult { Data = emps, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
     }
}

我认为在 JsonResult{} 中访问 db 会导致问题。

【讨论】:

    【解决方案2】:

    评估工作正常,因为您尚未将结果集转换为 JSON 的有效数据类型。

    你可以替换下面的代码

    JsonResult { Data = db.Employees, JsonRequestBehavior = ..}
    

    与

    JsonResult { Data = db.Employees.ToList(), JsonRequestBehavior = ..}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 2023-02-06
      • 1970-01-01
      • 2023-02-17
      相关资源
      最近更新 更多