私はに変換するDBQuery<T>
を持っています(このビットは正常に動作します)。しかし、私は失敗した...のObjectQueryへのIQueryableを変換しようとしている: -DBQuery <T>をObjectQuery <T>に変換するにはどうすればよいですか?
public void Foo(this IQueryable<T> source)
{
// ... snip ...
ObjectQuery<T> objectQuery = source as ObjectQuery<T>;
if (objectQuery != null)
{
// ... do stuff ...
}
}
。さて、それは動作していません - つまり。 objectQuery
はnull
です。
今、DBQuery<T> inherits IQueryable<T>
..私はこれがうまくいくと思った。
私はコードに...
var x = (ObjectQuery<T>) source;
を変更する場合は、次の例外がスローされます -
System.InvalidCastExceptionの:タイプ 「System.Dataの キャストオブジェクトにできません。 Entity.Infrastructure.DbQuery
1[Tests.Models.Order]' to type 'System.Data.Objects.ObjectQuery
1 [Tests.Models.Order] '。
は、なぜあなたはのObjectQueryにキャストする必要がありますか? – anon
私は、DBQueryを取り、ObjectQueryを構築するメソッドが必要になると思います。それまたは明示的な変換。私はどちらかが痛みであることを理解しています。 –
これは興味深い質問です。 DbContextとObjectContextの違いは、DbQueryとObjectQueryとの直接の関係はありません。私は直接的な変換が可能であるとは思わない。繰り返しますが、最初にキャストが必要な理由を再検討する必要があります。また、「ソース」はどこから来ていますか? – anon