Существует ли общий метод проверить, определяет ли свойство поддерживаемый поставщиком Linq, особенно OData?

Я успешно выполнил следующее утверждение с 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 [Система. Int32, Система. Строка, Система. Int32] с выражением s. Заказы. Количество () не поддерживается"..

Я знаю, что сервис OData очень ограничен в Поддержке Linq. У меня есть динамическая поддержка оператора Linq в моем приложении. На самом деле я пытаюсь переместить источник данных от Компактного SQL Server до сервиса OData.

Таким образом, я должен иметь дело с NotSupportedException общим способом. В настоящее время я пытаюсь проверить, что синтаксис свойства определяет прежде, чем выполнить его, такой как

"s.Orders.Count() as Count"   

Это прошло мою проверку, но это встретило NotSupportedException OData.

Существует ли способ проверить, определяет ли свойство (строкой, или лямбда) поддерживается поставщиком Linq?

Любые предложения ценятся.

Ying

11
задан Sergej Andrejev 22 June 2010 в 09:03
поделиться