EntityFramework 中的错误:“带有语句主体的 Lambda 表达式无法转换为表达式树”
收到错误“带有 a 的 lambda 表达式”使用实体框架时,“语句体无法转换为表达式树”可能会令人困惑。让我们澄清一下问题是什么以及如何解决它。
尝试执行包含语句正文(如问题中提供的语句正文)的 lambda 表达式时会发生错误。在实体框架中,lambda 表达式用于构建 LINQ 查询,然后将其转换为 SQL 语句以供数据库执行。但是,lambda 表达式中的语句体(例如变量声明和赋值)无法转换为 SQL。
要解决此问题,建议使用更简单的 lambda 表达式,直接返回其值,而不需要额外的语句。下面是一个更正的示例:
Obj[] myArray = objects.Select(o => new Obj { Var1 = o.someVar, Var2 = o.var2 }).ToArray();
在这种情况下,lambda 表达式只是创建具有所需属性的 Obj 类的新实例。这可以转换为数据库可以理解和执行的表达式树。请记住,在使用实体框架时,请确保数据库查询中使用的 lambda 表达式简单且不包含复杂的语句。
以上是为什么实体框架抛出'带有语句主体的 Lambda 表达式无法转换为表达式树”?的详细内容。更多信息请关注PHP中文网其他相关文章!