Der LINQ-Ausdruck konnte bei Verwendung des OData-Frameworks mit DTOs nicht übersetzt werdenC#

Ein Treffpunkt für C#-Programmierer
Guest
 Der LINQ-Ausdruck konnte bei Verwendung des OData-Frameworks mit DTOs nicht übersetzt werden

Post by Guest »

Ich bin sowohl bei Odata als auch bei EntityFramework neu und versuche, OData mit DTOs zu verwenden. Mein Entitätsmodell wurde etwa so definiert:

Code: Select all

public Orders
{
public String OrderId{get; set;}
public List? Items{get;set;}
}

public Item
{
public String ItemId{get; set;}
public String ItemType{get; set;}
}
Und meine Abfrage ist etwa so:

Code: Select all

_db.Orders.Select(o => new OrdersDTO
{
OrderId = o.OrderId,
// This works if I dont register Item DTO in my Odata EDM model
// Even if I comment this I still get the same error
Items = o.Items.Select(i => new Item
{
ItemId = i.ItemId,
ItemType = i.ItemType
}).ToList()
}
Selbst wenn ich das Element nicht in meiner Auswahl der Abfrage erwähnt habe, erhalte ich die Fehlermeldung Fehler beim Erstellen der Abfragezeichenfolge:

Code: Select all

Error creating query string: The LINQ expression '$it => new SelectAll{
Model = __TypedProperty_2,
Instance = $it,
UseInstanceForProperties = True
}
Idealerweise möchte ich, dass Odata dynamisch eine SQL-Abfrage erstellt, die nur die erforderlichen Daten abruft. Wie bei direkten Entitäten.
Ich habe https://github.com/dotnet/efcore/issues/27460 eine der Lösungen ausprobiert, die besagt, dass die Nullausbreitung auf „false“ gesetzt werden soll, aber Ich stehe immer noch vor dem gleichen Fehler.
Ich habe das Gefühl, dass ich etwas grundsätzlich nicht verstehe, wie DTOs definiert werden müssen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post