我有一个DBQuery<T>
其转换为 IQueryable<T>
(这一点工作正常)。但后来我尝试将 IQueryable 转换为 ObjectQuery .. 失败了:-
public void Foo(this IQueryable<T> source)
{
// ... snip ...
ObjectQuery<T> objectQuery = source as ObjectQuery<T>;
if (objectQuery != null)
{
// ... do stuff ...
}
}
在我切换到 Entity-Framework 4 CTP5 Magic Unicorn blah blah blah 之前,这曾经有效。现在,它不起作用 - 即。 objectQuery
是 null
.
现在,DBQuery<T> inherits IQueryable<T>
..所以我认为这应该可行。
如果我将代码更改为..
var x = (ObjectQuery<T>) source;
然后抛出以下异常:-
System.InvalidCastException: Unable to cast object of type 'System.Data.Entity.Infrastructure.DbQuery
1[Tests.Models.Order]' to type 'System.Data.Objects.ObjectQuery
1[Tests.Models.Order]'.
有什么建议吗?
最佳答案
DbQuery<T>
包含Include
方法,因此您不需要转换为 ObjectQuery
。 ObjectQuery
无法从 DbQuery
访问实例 - 它被包装在内部类型 InternalQuery
中并且未定义转换运算符。
顺便说一句。当您添加using System.Data.Entity
时并引用CTP5,您可以调用Include
上IQueryable<T>
!
关于.net - 如何将 DBQuery<T> 转换为 ObjectQuery<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4766122/