pomyślnie prowadził następujące oświadczenie z NorthWind.sdf w LINQPad:Czy istnieje ogólna metoda sprawdzania, czy właściwość zdefiniowana obsługiwana przez dostawcę Linq, w szczególności OData?
from s in Shippers
select new
{
s.ShipperID,
s.CompanyName,
Count=s.ShipViaOrders.Count()
}
Jednocześnie, nie udało mi się uruchomić podobne oświadczenie z Serwisu OData (http://services.odata.org/northwind/northwind.svc) w LINQPad:
from s in Shippers
select new
{
s.ShipperID,
s.CompanyName,
Count=s.Orders.Count()
}
Błąd: "Konstruowanie lub inicjowanie wystąpień typu <> f__AnonymousType0`3 [System.Int32, System.String, System.Int32] z wyrażeniem s.Orders.Count() nie jest obsługiwane.".
Wiem, że usługa OData jest bardzo ograniczona w obsłudze Linq. Mam dynamiczną obsługę instrukcji Linq w mojej aplikacji. Właściwie próbuję przenieść źródło danych z Compact SQL Server do usługi OData.
Tak więc mam do czynienia z wyjątkiem NotSupportedException w sposób ogólny. Obecnie staram się sprawdzić składnię własności zdefiniowania przed uruchomieniem go, takiego jak
"s.Orders.Count() as Count"
Minęło czek, ale spotkał się z NotSupportedException OData.
Czy istnieje sposób sprawdzenia, czy właściwość zdefiniować (przez ciąg lub lambda) jest obsługiwana przez dostawcę Linq?
Wszelkie sugestie są mile widziane.
Ying
@Ying: To brzmi jak * odpowiedź * dla mnie. Jeśli tak, możesz to zaakceptować. – chiccodoro