by Guest » 18 Jan 2025, 19:49
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.
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]public Orders
{
public String OrderId{get; set;}
public List? Items{get;set;}
}
public Item
{
public String ItemId{get; set;}
public String ItemType{get; set;}
}
[/code]
Und meine Abfrage ist etwa so:
[code]_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()
}
[/code]
Selbst wenn ich das Element nicht in meiner Auswahl der Abfrage erwähnt habe, erhalte ich die Fehlermeldung Fehler beim Erstellen der Abfragezeichenfolge:
[code]Error creating query string: The LINQ expression '$it => new SelectAll{
Model = __TypedProperty_2,
Instance = $it,
UseInstanceForProperties = True
}
[/code]
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.