【发布时间】:2015-07-23 20:35:26
【问题描述】:
我的 C# VS2015 应用程序抛出此异常:
System.InvalidCastException 未处理
Message=无法投射 类型的对象 'System.Data.Entity.Infrastructure.DbQuery`1[ADONET4LINQtoENTITIES.Customer]' 键入“System.Data.Objects.ObjectQuery”。
来源=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的类型为DbQuery<ADONET4LINQtoENTITIES.Customer>,而不是DbQuery或ObjectQuery。 -
您是否使用相同版本的 EF 工作时和不工作时? It seems they're not related anymore.
-
@manji 实现就像魅力一样。我只需要添加:
using System.Data.Entity.Infrastructure,并将query定义中的ToTraceString()调整为ToString()。
标签: c# database linq visual-studio-2015