相关疑难解决方法(0)

不支持客户端GroupBy

我有以下Entity Framework Core 3.0:

var units = await context.Units
  .SelectMany(y => y.UnitsI18N)
  .OrderBy(y => y.Name)
  .GroupBy(y => y.LanguageCode)
  .ToDictionaryAsync(y => y.Key, y => y.Select(z => z.Name));
Run Code Online (Sandbox Code Playgroud)

我得到以下错误:

Client side GroupBy is not supported.
Run Code Online (Sandbox Code Playgroud)

如果未在客户端上运行查询,为什么会出现此错误?

要在客户端或客户端的一部分上运行查询,我将执行以下操作:

var units = context.Units
  .SelectMany(y => y.UnitsI18N)
  .OrderBy(y => y.Name)
  .AsEnumerable()
  .GroupBy(y => y.LanguageCode)
  .ToDictionary(y => y.Key, y => y.Select(z => z.Name));
Run Code Online (Sandbox Code Playgroud)

现在可以了...

entity-framework-core-3.0

10
推荐指数
2
解决办法
1211
查看次数

将 EF Core 查询从 2.2 转换为 3.0 - 异步等待

在 EF Core 2.2 中,我有:

      var data = await _ArticleTranslationRepository.DbSet
        .Include(arttrans => arttrans.Article)
        .ThenInclude(art => art.Category)
        .Where(trans => trans.Article != null && trans.Article.Category != null && trans.Article.Category.Id == categoryId.Value)
        .GroupBy(trans => trans.ArticleId)
        .Select(g => new { ArticleId = g.Key, TransInPreferredLang = g.OrderByDescending(trans => trans.LanguageId == lang).ThenByDescending(trans => trans.LanguageId == defaultSiteLanguage).ThenBy(trans => trans.LanguageId).FirstOrDefault() })
        .Select(at => at.TransInPreferredLang)
        .OrderBy(at => at.Article.SortIndex)
        .ToListAsync();
Run Code Online (Sandbox Code Playgroud)

现在使用 EF Core 3.0 我不得不写:

      var data = _ArticleTranslationRepository.DbSet
  .Include(arttrans => arttrans.Article)
  .ThenInclude(art => art.Category)
  .Where(trans => trans.Article != null …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework async-await entity-framework-core ef-core-3.0

5
推荐指数
1
解决办法
3345
查看次数