me funcionó con éxito la siguiente declaración con el Northwind.sdf en LINQPad:¿Existe un método general para verificar si una propiedad define soportada por un proveedor de Linq, especialmente OData?
from s in Shippers
select new
{
s.ShipperID,
s.CompanyName,
Count=s.ShipViaOrders.Count()
}
Al mismo tiempo, no pude correr una declaración similar con el Servicio Odata (http://services.odata.org/northwind/northwind.svc) en LINQPad:
from s in Shippers
select new
{
s.ShipperID,
s.CompanyName,
Count=s.Orders.Count()
}
El error es "Construir o inicializar instancias del tipo <> f__AnonymousType0`3 [System.Int32, System.String, System.Int32] con la expresión s.Orders.Count() no es compatible.".
Sé que el servicio de OData es muy limitado en el soporte de Linq. Tengo soporte dinámico de declaraciones Linq en mi aplicación. En realidad, estoy tratando de migrar la fuente de datos de Compact SQL Server al servicio OData.
Así que tengo que lidiar con NotSupportedException de una manera general. En la actualidad, intento para comprobar la sintaxis de la propiedad definir antes de ejecutarlo, como
"s.Orders.Count() as Count"
Pasó mi cheque, pero cumplió con NotSupportedException de OData.
¿Hay alguna forma de comprobar si un proveedor de Linq admite una definición de propiedad (por cadena o lambda)?
Cualquier sugerencia es apreciada.
Ying
@Ying: Esto suena como * la * respuesta para mí. Si es así, puede querer aceptarlo. – chiccodoro