efcore icon indicating copy to clipboard operation
efcore copied to clipboard

Fix to #30922 - Most cases of projecting a primitive collection don't work

Open maumar opened this issue 1 year ago • 0 comments

Problem was that for cases that compose on the collection of primitives and then project it, we need identifier to properly bucket the results. On SqlServer we can use hidden key column that is a result of OPENJSON - we need something that is unique so we can't use the value itself. Fix is to add identifier to the SelectExpression based on OPENJSON and also modify the logic that figures out if we need key (and thus need to revert to OPENJSON without WITH clause). Also some minor fixes around nullability - when projecting element of a collection of primitives using OUTER APPLY/JOIN we must set the projection binding to nullable, as the value can always be null, in case of empty collection.

Fixes #30922

maumar avatar Jul 14 '23 01:07 maumar