EF Core erstellt mehrere Objekte, wenn die Sammlung sowohl NULL- als auch Nicht-NULL-Werte enthältC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 EF Core erstellt mehrere Objekte, wenn die Sammlung sowohl NULL- als auch Nicht-NULL-Werte enthält

Post by Anonymous »

Ich erlebe unerwartetes Verhalten mit EF Core 6, wenn eine Abfrage zwei separate Entitätsinstanzen anstelle einer erstellt, wenn eine zugehörige Sammlung sowohl NULL- als auch Nicht-NULL-Werte enthält.
Codebeispiel:

Code: Select all

public async Task Get(int id)
{
var result = await _dbContext.Orders
.Where(o => o.Id == id)
.Select(o => new OrderDto
{
Id = o.Id,
ProductCategories = o.OrderItems
.Select(oi => oi.ProductCategory)
.Distinct()
.ToList()
})
.SingleOrDefaultAsync();
return result;
}
Die zugrunde liegende Datenbankabfrage gibt diese Zeilen aus dem JOIN zurück:



OrderId
ProductCategory




1
NULL


1
Elektronik


1
Zubehör



Erwartete Ausgabe:



Id
ProductCategories




1
["Electronics", "Accessories", null]



Tatsächliche Ausgabe – zwei OrderDto-Objekte:



Id
ProductCategories




1
["Elektronik", "Zubehör"]


1
[null]


  • Die Verwendung von .AsSplitQuery() vor .SingleOrDefaultAsync() löst das Problem und gibt wie erwartet ein einzelnes Objekt zurück
  • Das Problem tritt nur auf, wenn die Sammlung sowohl NULL- als auch Nicht-NULL-Werte enthält
Fragen
  • Warum Erstellt EF Core zwei separate Objekte, anstatt alle Werte in einer Liste zusammenzufassen? Und warum löst AsSplitQuery das Problem?
  • Ist das eine bekannte Einschränkung/ein bekannter Fehler in EF Core 6?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post