Я успешно выполнил следующий оператор с 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 в общем виде. В настоящее время я пытаюсь проверить синтаксис свойства define перед его запуском, например
"s.Orders.Count() as Count"
Он прошел мою проверку, ноон встретил NotSupportedException для OData.
Есть ли способ проверить, поддерживается ли определение свойства (с помощью строки или лямбды) поставщиком Linq?
Anyпредложения приветствуются.
Ин