EFCORE 2.2.6简单联接抛出必须是可还原的节点

时间:2019-07-19 18:28:22

标签: ef-core-2.2

我正在将应用程序升级到EF 2.2,但是当我尝试进行简单的联接时,使用EFCore 2.2.6会不断抛出“必须是可还原节点” ArgumentException。

喜欢

var list = (from a in db.TableA().Include("TableC")
       join b in inMemoryList on a.Id equals b.AId
       select a).ToList();

如果我更改为

var list = (from a in db.TableA().ToList()
       join b in inMemoryList on a.Id equals b.AId
       select a).ToList();

它可以工作,但是会减慢该过程。

有什么想法吗?谢谢

1 个答案:

答案 0 :(得分:2)

在EF Core版本之间有时会发生这种情况。

通常,如果可以,请避免加入内存中的集合-从来没有很好地支持它们。

例如,Contains用于单字段过滤

var ids = inMemoryList.Select(x => x.AId); // has to be outside the query expression tree
var list = db.TableA.Where(a => ids.Contains(a.Id)).ToList();