Entity Framework Core: LINQ-Abfrage mit OrderByDescending- und Navigationseigenschaften kann nicht in SQL übersetzt werdC#

Ein Treffpunkt für C#-Programmierer
Guest
 Entity Framework Core: LINQ-Abfrage mit OrderByDescending- und Navigationseigenschaften kann nicht in SQL übersetzt werd

Post by Guest »

Ich begegne den folgenden Fehler, während ich versuche, eine Linq -Abfrage auszuführen. Ich muss alle Chats für den aktuellen Benutzer zusammen mit der letzten Meldung (bestellt von erstellt) in jedem Chat in einer einzelnen Abfrage abrufen. >

Code: Select all

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();
}
Fehler:

Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
Eine nicht behandelte Ausnahme ist aufgetreten während der Ausführung der Anfrage.
System.InvalidOperationException: Der LINQ-Ausdruck 'DbSet()
.Where(m => EF.Property(StructuralTypeShaperExpression:
SnapTalk.Domain.Entities.ChatEntity
ValueBufferExpression:
ProjectionBindingExpression: Inner
IsNullable: False
, „Id“) != null && object.Equals(
objA: (object)EF.Property(StructuralTypeShaperExpression:
SnapTalk.Domain.Entities.ChatEntity
ValueBufferExpression:
ProjectionBindingExpression: Inner
IsNullable: False
, " Id"),
objB: (object)EF.Property(m, "ChatId")))
.OrderByDescending(m => m.CreatedAt)' konnte nicht übersetzt werden. Zusätzliche Informationen: Die Übersetzung des Mitglieds „CreatedAt“ für den Entitätstyp „MessageEntity“ ist fehlgeschlagen. Dies tritt häufig auf, wenn die Zuordnung des angegebenen Mitglieds aufgehoben wird. Schreiben Sie die Abfrage entweder in eine übersetzbare Form um oder wechseln Sie explizit zur Clientauswertung, indem Sie einen Aufruf von „AsEnumerable“, „AsAsyncEnumerable“, „ToList“ oder „ToListAsync“ einfügen. Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=2101038.

Bearbeiten:

Code: Select all

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post