Я новичок в 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#
Место общения программистов C#
1737293871
Anonymous
Я новичок в 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
})
Подробнее здесь: [url]https://stackoverflow.com/questions/79356370/linq-expression-could-not-be-translated-when-using-odata-framework-with-dtos[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия