Необходимо скачать из базы данных сущности диалогов вместе с последним сообщением. Такой код не работает:
_dbContext.Dialogs
.Where(_ => _.Users.Any(ud => ud.ApplicationUserId == userId))
.Include(_ => _.Messages.Where(m => m.Id == _.Messages.Max(mm => mm.Id)))
.ToListAsync();
Ошибка: The Include property lambda expression is invalid. The expression should represent a property access: 't => t.MyProperty'.
Как мне скачать одним запросом диалоги только последними сообщениями?
Если условие только одно - можно развернуть связь:
_dbContext.Messages
.Where(_ => m.Id == _.Dialog.Messages.Map(mm => nn.Id))
.Where(_ => _.Dialog.Users.Any(ud => ud.ApplicationUserId == userId))
.Include(_ => _.Dialog)
.ToListAsync();
В более сложных случаях вы можете загрузить анонимный класс:
_dbContext.Dialogs
.Where(_ => _.Users.Any(ud => ud.ApplicationUserId == userId))
.SelectMany(_ => new {
dialog = _,
message = _.Messages.Where(m => m.Id == _.Messages.Max(mm => mm.Id))).FirstOrDefault(),
})
.ToListAsync();
PS вот такая проверка - m.Id == _.Messages.Max(mm => mm.Id)
однажды может стать убийцей производительности, осторожнее с ней.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Хочу написать функцию для упрощения получения GET реквестов между winforms и web_api
Нажимаю на обьект на который повешен скрипт, и ничего не происходитОбъект двумерный
Подскажите, как в Regex передать массив Я попытался, но компилятор выдает ошибку