sql >> Base de Datos >  >> RDS >> Mysql

Cómo obtener el registro más reciente para cada grupo utilizando Entity Framework y MySQL, incluida la entidad relacionada

No necesita el SqlQuery construir para hacer el orden antes de la agrupación:

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
                           };

Esto hace lo mismo, pero traduce la instrucción completa a SQL, lo que tiene dos ventajas

  • sender no se carga de forma diferida para cada mensaje
  • sender.email no falla cuando sender es nulo, porque en SQL no hay una referencia de objeto nulo. La expresión completa (sender.email ) simplemente devuelve nulo.