【发布时间】:2020-01-25 07:40:40
【问题描述】:
以下代码在 EF Core 2.2 上运行良好,但在 EF Core 3.0 上无法运行
var items = (from asset in Context.Assets
join assetCategory in Context.AssetCategories on asset.CategoryId equals assetCategory.Id
group assetCategory by assetCategory.Id into assetCategories
select new AssetCategorySummary
{
CategoryId = assetCategories.Key,
CategoryName = assetCategories.Select(p => p.CategoryName).FirstOrDefault(),
TotalAsset = assetCategories.Count()
}).ToListAsync();
我得到的错误:
处理 LINQ 表达式 'AsQueryable(Select
( 来源:NavigationTreeExpression 值:默认值(IGrouping ) 表达式:(未处理的参数:e), 选择器:(p) => p.CategoryName))' by 'NavigationExpandingExpressionVisitor' 失败的。这可能表示 EF Core 中的错误或限制。 有关更多详细信息,请参阅https://go.microsoft.com/fwlink/?linkid=2101433。
需要帮助
【问题讨论】:
-
这不是问题。升级到 EF 核心 3 时预计会发生变化。除非有与之相关的实际问题,否则无需在此处报告。
-
@S.阿齐兹·卡兹达尔 是的!这就是我告诉你的
fetch the data into memory and then make your query,虽然它没有效果,因为这会降低性能或在大量数据的情况下失败。 -
@TanvirArjel 需要一种额外的方法来做到这一点。有什么东西可以将原始 sql 写入数据库吗?不是实体。某事
Context.Database.RawSql -
@S.AzizKazdal 您可以编写原始 sql 并使用
FromSql方法。更多详情:entityframeworkcore.com/querying-data-raw-sql-queries -
@TanvirArjel no FromSql 这不是我所说的。我想执行此查询并获取要列出的值。
select Kategori.Id,Kategori.CategoryName,count(Varlik.Id) as [Varlık Sayısı] from Assets Varlik inner join AssetCategories Kategori on Kategori.Id = Varlik.CategoryId group by Kategori.Id,Kategori.CategoryName
标签: entity-framework ef-core-3.0