Query: we can uniquely identify keyless entities that have Distinct operation applied on them

Open
#26,078 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
csharp
Domain
database

Research direction

The issue does not name specific files or tests. Start by locating the Distinct/GroupBy identifier-salvage logic in EF Core's query processing and review issue #26077 for the complex-expression limitation. Done means keyless entities in nested collection queries can use a distinct projection for result bucketing without the current missing-identifier failure.

Written by the indexing model from the issue text.

Description

area-groupby area-query needs-design

Currently we have logic for Distinct/GroupBy to "salvage" identifiers, in case they are not part of the distinct projection / grouping key. In case of Distinct we simply can use the entire projection (unless it contains some complex expressions, see https://github.com/dotnet/efcore/issues/26077), since it's now guaranteed to be unique, and in case of group by we use entire grouping key.

We should also be able to do this for keyless entities - they don't have identifiers so anytime we have a nested collection scenario involving them, we throw due to lack of identifiers needed to perform correct bucketing of the results. For now, we only do this trick if there were any identifiers to begin with.

Dominant language
C#
Stars
14.8k
Forks
3.4k
Avg merge
2d 5h
Merged PRs (30d)
134

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from dotnet/efcore

All issues in dotnet/efcore

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.