Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter o registro mais recente para cada grupo usando o Entity Framework e o MySQL, incluindo a entidade relacionada


Você não precisa do SqlQuery construct para fazer a ordenação antes do agrupamento:
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
                           };

Isso faz o mesmo, mas traduz toda a instrução em SQL, o que tem duas vantagens
  • sender não é carregado com preguiça para cada mensagem
  • sender.email não trava quando sender é nulo, pois no SQL não há referência de objeto nulo. A expressão inteira (sender.email ) apenas retorna nulo.