我的 C# VS2015 应用程序抛出此异常:
System.InvalidCastException was unhandled
Message=Unable to cast object of type 'System.Data.Entity.Infrastructure.DbQuery`1[ADONET4LINQtoENTITIES.Customer]' to type 'System.Data.Objects.ObjectQuery'.
Source=ADONET4LINQtoENTITIES
错误发生在定义查询变量的行:
var customers = from c in de.Customers
where c.Orders.Any(o => o.OrderAmount > 150)
select c;
string query = ((ObjectQuery)customers).ToTraceString();
我的假设是 ObjectQuery
正在提示异常。
我尝试了 string query = ((DbQuery)customers).ToString()
,它在 VS2013 中有效,但这导致了同样的异常。
为什么 VS2015 使用这些查询方法会抛出异常?
最佳答案
因为 Customers
不是 ObjectQuery
你想要的是 ObjectQuery<Customer>
所以也删除投影(Select
)。
更改为
var CustomersQuery= from c in de.Customers
where c.Orders.Any(o => o.OrderAmount > 150);
string query = CustomersQuery.ToTraceString();
我通过命名 CustomersQuery
消除了命名词汇歧义.
参见 ObjectQuery.ToTraceString Method (System.Data.Objects)获取更多信息。
关于c# - 类型为 'System.InvalidCastException' 的未处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31597539/