Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So erhalten Sie den neuesten Datensatz für jede Gruppe mit Entity Framework und MySQL, einschließlich der zugehörigen Entität

Sie benötigen die SqlQuery nicht Konstrukt, um die Reihenfolge vor der Gruppierung durchzuführen:

var refGroupQuery = from m in dbContext.Messages
     group m by m.receiver_id into refGroup
     let firstItem = refGroup.OrderByDescending(x => x.created_at)
                             .FirstOrDefault()
     select new MessageDTO { 
                              id = firstItem.id, 
                              content = firstItem.content,
                              sender_email = firstItem.sender.email
                           };

Das macht dasselbe, aber es übersetzt die ganze Anweisung in SQL, was zwei Vorteile hat

  • sender wird nicht für jede Nachricht verzögert geladen
  • sender.email stürzt nicht ab, wenn sender ist null, da es in SQL keine Nullobjektreferenz gibt. Der gesamte Ausdruck (sender.email ) gibt einfach null zurück.