Mam DBQuery<T>
, który konwertuje do IQueryable<T>
(ten bit działa dobrze). Ale potem próbuję przekonwertować IQueryable do ObjectQuery .. który nie: -Jak przekonwertować obiekt DBQuery <T> na obiekt ObjectQuery <T>?
public void Foo(this IQueryable<T> source)
{
// ... snip ...
ObjectQuery<T> objectQuery = source as ObjectQuery<T>;
if (objectQuery != null)
{
// ... do stuff ...
}
}
To używane do pracy, zanim zmienił się do Entity-ramowego 4 CTP5 Magiczne Unicorn bla bla bla. Teraz to nie działa - np. objectQuery
to null
.
Teraz DBQuery<T> inherits IQueryable<T>
.. więc pomyślałem, że to powinno działać.
przypadku zmiany kodu do ..
var x = (ObjectQuery<T>) source;
następnie następujące jest wyjątek: -
System.InvalidCastException: Nie można rzutować obiektu typu „System.Data. Entity.Infrastructure.DbQuery
1[Tests.Models.Order]' to type 'System.Data.Objects.ObjectQuery
1 [Tests.Models.Order] '.
Wszelkie sugestie?
Dlaczego trzeba oddać go do ObjectQuery? – anon
Myślę, że będziesz potrzebować metody, która pobiera DBQuery i konstruuje obiekt ObjectQuery. To lub wyraźna konwersja. Zdaję sobie jednak sprawę, że jeden z nich to ból. –
To interesujące pytanie. DbQuery nie ma bezpośredniego związku z ObjectQuery, w przeciwieństwie do DbContext kontra ObjectContext. Wątpię, aby możliwa była bezpośrednia konwersja. Ponownie, powinieneś ponownie zbadać, dlaczego potrzebujesz obsady w pierwszej kolejności. Skąd pochodzi "źródło"? – anon