j'ai couru avec succès la déclaration suivante à la Northwind.sdf dans LINQPad:Existe-t-il une méthode générale pour vérifier si une propriété est définie par un fournisseur Linq, en particulier OData?
from s in Shippers
select new
{
s.ShipperID,
s.CompanyName,
Count=s.ShipViaOrders.Count()
}
En même temps, je ne ai pas exécuter une instruction similaire avec le Service OData (http://services.odata.org/northwind/northwind.svc) dans LINQPad:
from s in Shippers
select new
{
s.ShipperID,
s.CompanyName,
Count=s.Orders.Count()
}
l'erreur est "Construire ou l'initialisation des instances du type <> f__AnonymousType0`3 [System.Int32, System.String, System.Int32] avec l'expression s.Orders.Count() ne sera pas supporté.".
Je sais que le service OData est très limité dans Linq Support. J'ai un support de déclaration Linq dynamique dans mon application. En fait, j'essaie de migrer la source de données de Compact SQL Server vers le service OData.
Donc je dois traiter avec NotSupportedException d'une manière générale. À l'heure actuelle, j'essaie de vérifier la syntaxe de la propriété définir avant de l'exécuter, comme
"s.Orders.Count() as Count"
Il a passé mon chèque, mais il rencontré NotSupportedException de OData.
Existe-t-il un moyen de vérifier si une propriété définie (par une chaîne ou un lambda) est prise en charge par un fournisseur Linq?
Toutes les suggestions sont appréciées.
Ying
@Ying: Cela ressemble à * la * réponse à moi. Si oui, vous pouvez l'accepter. – chiccodoro