Я успешно выполнил следующую инструкцию с помощью NorthWind.sdf в LinqPad:
from s in Shippers
select new
{
s.ShipperID,
s.CompanyName,
Count=s.ShipViaOrders.Count()
}
В то же время я не смог запустить аналогичный оператор с помощью службы Odata (http://services.odata.org/northwind/northwind.svc) в LinqPad:
from s in Shippers
select new
{
s.ShipperID,
s.CompanyName,
Count=s.Orders.Count()
}
Ошибка: "Построение или инициализация экземпляров типа < > f__AnonymousType0`3 [System.Int32, System.String, System.Int32] с выражением s.Orders.Count() не поддерживается.".
Я знаю, что служба OData очень ограничена в поддержке Linq. У меня есть динамическая поддержка операторов Linq в моем приложении. На самом деле я пытаюсь перенести источник данных из Compact SQL Server в службу OData.
Поэтому мне приходится иметь дело с NotSupportedException в общем виде. В настоящее время я пытаюсь проверить синтаксис определения свойства перед его запуском, например
"s.Orders.Count() as Count"
Он прошел мой чек, но он встретил NotSupportedException OData.
Есть ли способ проверить, определяется ли свойство (строкой или лямбдой) поставщиком Linq?
Любые предложения приветствуются.
Ин