Я новичок в Odata и EntityFramework и пытаюсь использовать OData с DTO. Моя модель сущности определена примерно так:
public Orders
{
public String OrderId{get; set;}
public List? Items{get;set;}
}
public Item
{
public String ItemId{get; set;}
public String ItemType{get; set;}
}
И мой запрос выглядит примерно так:
_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()
}
Теперь, даже если я не упомянул элемент в своем выборе запроса, он выдает мне ошибку: Ошибка создания строки запроса:
Error creating query string: The LINQ expression '$it => new SelectAll{
Model = __TypedProperty_2,
Instance = $it,
UseInstanceForProperties = True
}
В идеале мне бы хотелось, чтобы Odata динамически создавала SQL-запросы, извлекающие только необходимые данные. Как и в случае с прямыми объектами.
Я попробовал https://github.com/dotnet/efcore/issues/27460 одно из решений, в котором говорится, что распространение значения null установлено как ложное, но Я все еще сталкиваюсь с той же ошибкой.
Я чувствую, что есть что-то, что я принципиально не понимаю в том, как необходимо определять DTO.
EDIT: Я обнаружил, что когда я удаляю объекта Item из моей модели Odata EDM, запрос работает должным образом. Однако удаление этого означает, что я больше не могу использовать параметр $expand в запросе Odata.
Более того, даже если я не сохраняю явный выбор для списка, он все равно выдает ту же ошибку._db.Orders.Select(o => new OrdersDTO
{
OrderId = o.OrderId
// Even when I have not mentioned the Item mapping it still gives
//me an error
})
Подробнее здесь: https://stackoverflow.com/questions/793 ... -with-dtos
Выражение LINQ не удалось перевести при использовании OData Framework с DTO. ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Выражение LINQ не удалось перевести при использовании OData Framework с DTO.
Anonymous » » в форуме C# - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Выражение LINQ не удалось перевести при использовании OData Framework с DTO.
Anonymous » » в форуме C# - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Выражение LINQ не удалось перевести при использовании OData Framework с DTO.
Anonymous » » в форуме C# - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Выражение LINQ не удалось перевести при использовании OData Framework с DTO.
Anonymous » » в форуме C# - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-