使用包含使用EF查询记录时出现多个运行时错误

克里特纳

我正在编写使用EF-5的更新方法,并且在选择记录以进行目标更新时遇到问题。

public void Update(List<MyEntities> entitiesToUpdate)
{
    // Get rows that match IDs
    var findUpdateRows = this
        ._context
        .MyEntity
        .Where(w => entitiesToUpdate
            .Select(s => s.SomePropertyId)
            .ToList()
            .Contains(w.SomePropertyId)
        )
        .ToList();
}

    // run time error - LINQ to Entities does not recognize the method 'System.Collections.Generic.List`1[System.Int32] ToList[Int32](System.Collections.Generic.IEnumerable`1[System.Int32])' method, and this method cannot be translated into a store expression.

如果我改为尝试:

    // Get rows that match IDs
    var findUpdateRows = this
        ._context
        .MyEntity
        .Where(w => entitiesToUpdate
            .Select(s => s.SomePropertyId)
            .Contains(w.SomePropertyId)
        )
        .ToList();

    // Run time error - Unable to create a constant value of type 'xxx.MyEntities'. Only primitive types or enumeration types are supported in this context.

使用以下代码时,我可以使方法按预期工作(但我想知道并理解如何在没有单独的idsToUpdate var和赋值的情况下完成相同的工作):

    // Create list of IDs to update
    List<int> idsToUpdate = new List<int>();
    entitiesToUpdate.ForEach(fe => idsToUpdate.Add(fe.SomePropertyId));

    // Get rows that match IDs
    var findUpdateRows = this
        ._context
        .MyEntity
        .Where(w => idsToUpdate.Contains(w.SomePropertyId))
        .ToList();
格特·阿诺德

这个例外

无法创建类型的常量值...

始终表示在LINQ语句中的某个地方使用了对象(类实例),其中EF仅能处理原始值。所以第一步就是看:我在哪里使用对象?

var findUpdateRows = this._context.MyEntity // here
                         .Where(w => entitiesToUpdate // here
                                     .Select(s => s.SomePropertyId)
                                     .Contains(w.SomePropertyId))

现在我们知道只有一条线this._context.MyEntity可以运行,所以应该是entitiesToUpdate您凭直觉就知道了。

原因是整个表达式(entitiesToUpdateis是Expression)被翻译成SQL,而EF根本无法将List(类)对象翻译成SQL(只是想像一下它在SQL:/中的样子)。

所以你做对了,尽管

var idsToUpdate = entitiesToUpdate.Select(s => s.SomePropertyId).ToList();

有点短。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试使用pip时出现运行时错误

来自分类Dev

使用动态数组时出现运行时错误 1004

来自分类Dev

使用VBA从受保护的网站导入Excel中的数据时出现运行时错误438

来自分类Dev

使用getline,strcpy,strtok C ++加载.txt文件时出现运行时错误

来自分类Dev

使用malloc在运行时分配内存时出现分段错误

来自分类Dev

使用静态导入编译运行时参数注释时出现“不兼容类型”错误

来自分类Dev

仅在使用“填充”时才出现“运行时错误'13'?

来自分类Dev

使用VBA访问ActiveX控件时出现运行时错误'438'问题

来自分类Dev

使用python在uva中提交代码时出现运行时错误

来自分类Dev

使用纯CMake构建SFML时出现运行时错误

来自分类Dev

使用g ++编译Objective-C项目时出现运行时错误

来自分类Dev

为什么在struct中使用字符串时出现运行时错误

来自分类Dev

使用列表框调用用户窗体时出现运行时错误

来自分类Dev

使用malloc在运行时分配内存时出现分段错误

来自分类Dev

(在C中)使用数组实现堆栈-将数组大小加倍时出现运行时错误

来自分类Dev

使用VBA从受保护的网站导入Excel中的数据时出现运行时错误438

来自分类Dev

使用'WScript.Shell'对象的'Run'方法时出现运行时错误

来自分类Dev

使用python在uva中提交代码时出现运行时错误

来自分类Dev

使用 SymPy 求解方程时出现运行时错误

来自分类Dev

使用LaunchControl运行时,bash脚本中出现错误

来自分类Dev

使用jCarouselLite时JavaScript运行时错误

来自分类Dev

在Scala中使用anorm时发生运行时错误

来自分类Dev

在Excel VBA中删除多个列时出现运行时错误1004

来自分类Dev

删除多个单元格时出现运行时错误13

来自分类Dev

运行Go代码时出现运行时错误

来自分类Dev

运行for循环时出现奇怪的运行时错误'424'

来自分类Dev

运行“粘贴”时,出现VBA运行时错误438

来自分类Dev

使用组合框在连续表单上动态搜索时出现运行时错误“ 2185”的问题

来自分类Dev

在Sitecore8.1中使用Glass.Mapper时,“可编辑”上出现运行时错误

Related 相关文章

  1. 1

    尝试使用pip时出现运行时错误

  2. 2

    使用动态数组时出现运行时错误 1004

  3. 3

    使用VBA从受保护的网站导入Excel中的数据时出现运行时错误438

  4. 4

    使用getline,strcpy,strtok C ++加载.txt文件时出现运行时错误

  5. 5

    使用malloc在运行时分配内存时出现分段错误

  6. 6

    使用静态导入编译运行时参数注释时出现“不兼容类型”错误

  7. 7

    仅在使用“填充”时才出现“运行时错误'13'?

  8. 8

    使用VBA访问ActiveX控件时出现运行时错误'438'问题

  9. 9

    使用python在uva中提交代码时出现运行时错误

  10. 10

    使用纯CMake构建SFML时出现运行时错误

  11. 11

    使用g ++编译Objective-C项目时出现运行时错误

  12. 12

    为什么在struct中使用字符串时出现运行时错误

  13. 13

    使用列表框调用用户窗体时出现运行时错误

  14. 14

    使用malloc在运行时分配内存时出现分段错误

  15. 15

    (在C中)使用数组实现堆栈-将数组大小加倍时出现运行时错误

  16. 16

    使用VBA从受保护的网站导入Excel中的数据时出现运行时错误438

  17. 17

    使用'WScript.Shell'对象的'Run'方法时出现运行时错误

  18. 18

    使用python在uva中提交代码时出现运行时错误

  19. 19

    使用 SymPy 求解方程时出现运行时错误

  20. 20

    使用LaunchControl运行时,bash脚本中出现错误

  21. 21

    使用jCarouselLite时JavaScript运行时错误

  22. 22

    在Scala中使用anorm时发生运行时错误

  23. 23

    在Excel VBA中删除多个列时出现运行时错误1004

  24. 24

    删除多个单元格时出现运行时错误13

  25. 25

    运行Go代码时出现运行时错误

  26. 26

    运行for循环时出现奇怪的运行时错误'424'

  27. 27

    运行“粘贴”时,出现VBA运行时错误438

  28. 28

    使用组合框在连续表单上动态搜索时出现运行时错误“ 2185”的问题

  29. 29

    在Sitecore8.1中使用Glass.Mapper时,“可编辑”上出现运行时错误

热门标签

归档