[英]EntityFramework Core 6.0 Linq Group Join problem ( on "into" word)
我正在使用 EF Core 6.0 框架。我正在编码 Web API ..我想加入城市和城镇实体,如下面的代码。
但是,如果我在 LinQ 查询中使用“ into ”字样“ into tmpTownArr ”,程序就会崩溃(它给 GroupJoin 错误,我写在图片下面)
在下面的图片 1 和 3 不工作,但 2 和 4 工作
1号错误代码:
The LINQ expression 'DbSet<City>()
.GroupJoin(
inner: DbSet<Town>(),
outerKeySelector: c => c.Id,
innerKeySelector: t => t.CityId,
resultSelector: (c, tmpTownArr) => new {
c = c,
tmpTownArr = tmpTownArr
})' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to 'AsEnumerable', 'AsAsyncEnumerable', 'ToList', or 'ToListAsync'. See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.
为什么不重新定义如何使用 EF 并使用导航属性而不是手动连接?
您的问题可以简化为
var townCities = await context.Set<City>.Select(c => new { c, c.Towns }).ToListAsync();
简短的回答是您编写的 Linq 无法转换为 SQL。
解决此问题的一种方法是使用 AsEnumerable(),但请注意这一点,因为它有很多潜在的不良副作用。
否则,您将需要提出另一种方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.