я успешно провел следующее заявление с Northwind.sdf в LINQPad:Существует ли общий метод проверки того, поддерживается ли свойство, поддерживаемое поставщиком Linq, особенно OData?
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?
Любые предложения приветствуются.
Ин
@Ying: Это звучит как * * ответ на меня. Если это так, вы можете принять его. – chiccodoro