首页 > 后端开发 > C++ > 为什么实体框架抛出'带有语句主体的 lambda 表达式无法转换为表达式树”?

为什么实体框架抛出'带有语句主体的 lambda 表达式无法转换为表达式树”?

Linda Hamilton
发布: 2024-12-31 08:45:13
原创
864 人浏览过

Why Does Entity Framework Throw

使用 EntityFramework 时出现错误:“带有语句主体的 lambda 表达式无法转换为表达式树”

使用 EntityFramework 的 Select 方法时,您可能会遇到错误:“带有语句主体的 lambda 表达式无法转换为表达式树。”当您提供的 lambda 表达式包含语句主体而不是简单表达式时,通常会发生此错误。

理解错误:

在提供的代码片段中:

Obj[] myArray = objects.Select(o =>
{
    var someLocalVar = o.someVar;

    return new Obj() {
    Var1 = someLocalVar,
    Var2 = o.var2 };
});
登录后复制

lambda 表达式在返回 Obj 实例之前使用语句体来声明和使用局部变量 someLocalVar。但是,EntityFramework 需要可以直接转换为 SQL 的简单表达式,以实现高效的数据库执行。

解决方案:

要解决此错误,请通过删除语句体并直接赋值:

Arr[] myArray = objects.Select(o => new Obj() {
    Var1 = o.someVar,
    Var2 = o.var2 
});
登录后复制

通过此修改,lambda 表达式仅包含一个简单的表达式,可以翻译成表达式树,代码就能编译成功。

以上是为什么实体框架抛出'带有语句主体的 lambda 表达式无法转换为表达式树”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板