Я сталкиваюсь с следующей ошибкой, пытаясь выполнить запрос LINQ. Мне нужно извлечь все чаты для текущего пользователя, а также последнее сообщение (заказано by censectat) в каждом чате, в одном запросе. >public async Task GetChats()
{
return await (
from uc in context.UserChats
where uc.UserId == httpContextProvider.CurrentUserId
join x in context.Chats on uc.ChatId equals x.Id
from lastMessage in x.Messages
.OrderByDescending(m => m.CreatedAt)
.Take(1)
.DefaultIfEmpty()
select new ChatResponse(
x.Id,
x.Name,
x.Description,
x.ChatType,
x.UserChats.Count(),
true,
lastMessage.Content,
lastMessage.CreatedAt,
lastMessage.User.UserName
)).ToListAsync();
}
< /code>
Ошибка: < /p>
microsoft.aspnetcore.diagnostics.developerexceptionpagemiddleware11N При выполнении запроса.
system.invalidoperationException: LINQ Expression 'dbset ()
. где(m => ef.property (structuraltypeshaperexpression:
snaptalk.domain.Entities. Chatentity
valuebufferexpression:
projectionbindingexpression: inner
isnullable: false
, "id")! = Null && object.equals (
obja: (объект) ef.property! (Structuraltypeshaperexpression:
snaptalk.domain.entities.chatentity
valuebufferexpression:
projectionbindingexpression: inner
isnullable: false
, "id"),
objb: (объект) ef.property (m, "chatid")))
.dorderbydescending(m => m.createdat) 'не может быть переведено. Дополнительная информация: перевод участника «Создан» на тип объекта «Сообщение» не удалось. Это обычно происходит, когда указанный элемент не нанесен. Либо перепишите запрос в форме, которая может быть переведена, либо переключитесь на оценку клиента явно, вставив призыв к «Asemerable», «Asasyncenumble», «толист» или «tolistasync». См. Https://go.microsoft.com/fwlink/?linkid=2101038 для получения дополнительной информации.
Изменить:
public class MessageEntity
{
public Guid Id { get; set; }
public required string Content { get; set; }
public DateTime CreatedAt { get; } = DateTime.Now;
public DateTime? UpdatedAt { get; set; }
public string? AttachmentFileName { get; set; }
public Guid UserId { get; set; }
public Guid ChatId { get; set; }
public Guid? ReplyToMessageId { get; set; }
public MessageEntity? ReplyToMessage { get; set; }
public ICollection Replies { get; set; } = new List();
public UserEntity User { get; set; }
public ChatEntity Chat { get; set; }
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... n-properti
Entity Framework Core: запрос LINQ со свойствами OrderByDescending и навигации не может быть преобразован в SQL ⇐ C#
Место общения программистов C#
1737820866
Anonymous
Я сталкиваюсь с следующей ошибкой, пытаясь выполнить запрос LINQ. Мне нужно извлечь все чаты для текущего пользователя, а также последнее сообщение (заказано by censectat) в каждом чате, в одном запросе. >public async Task GetChats()
{
return await (
from uc in context.UserChats
where uc.UserId == httpContextProvider.CurrentUserId
join x in context.Chats on uc.ChatId equals x.Id
from lastMessage in x.Messages
.OrderByDescending(m => m.CreatedAt)
.Take(1)
.DefaultIfEmpty()
select new ChatResponse(
x.Id,
x.Name,
x.Description,
x.ChatType,
x.UserChats.Count(),
true,
lastMessage.Content,
lastMessage.CreatedAt,
lastMessage.User.UserName
)).ToListAsync();
}
< /code>
Ошибка: < /p>
microsoft.aspnetcore.diagnostics.developerexceptionpagemiddleware11N При выполнении запроса.
system.invalidoperationException: LINQ Expression 'dbset ()
. где(m => ef.property (structuraltypeshaperexpression:
snaptalk.domain.Entities. Chatentity
valuebufferexpression:
projectionbindingexpression: inner
isnullable: false
, "id")! = Null && object.equals (
obja: (объект) ef.property! (Structuraltypeshaperexpression:
snaptalk.domain.entities.chatentity
valuebufferexpression:
projectionbindingexpression: inner
isnullable: false
, "id"),
objb: (объект) ef.property (m, "chatid")))
.dorderbydescending(m => m.createdat) 'не может быть переведено. Дополнительная информация: перевод участника «Создан» на тип объекта «Сообщение» не удалось. Это обычно происходит, когда указанный элемент не нанесен. Либо перепишите запрос в форме, которая может быть переведена, либо переключитесь на оценку клиента явно, вставив призыв к «Asemerable», «Asasyncenumble», «толист» или «tolistasync». См. Https://go.microsoft.com/fwlink/?linkid=2101038 для получения дополнительной информации.
Изменить:
public class MessageEntity
{
public Guid Id { get; set; }
public required string Content { get; set; }
public DateTime CreatedAt { get; } = DateTime.Now;
public DateTime? UpdatedAt { get; set; }
public string? AttachmentFileName { get; set; }
public Guid UserId { get; set; }
public Guid ChatId { get; set; }
public Guid? ReplyToMessageId { get; set; }
public MessageEntity? ReplyToMessage { get; set; }
public ICollection Replies { get; set; } = new List();
public UserEntity User { get; set; }
public ChatEntity Chat { get; set; }
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79386955/entity-framework-core-linq-query-with-orderbydescending-and-navigation-properti[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия