我正在将应用程序升级到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();
它可以工作,但是会减慢该过程。
有什么想法吗?谢谢
答案 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();