C# 类型为';的未处理异常;系统。无效卡斯特例外';
我的C#VS2015应用程序引发此异常: System.InvalidCastException未处理 消息=无法强制转换 类型的对象 'System.Data.Entity.Infrastructure.DbQuery'1[ADONET4LINQtoENTITIES.Customer]' 键入“System.Data.Objects.ObjectQuery”。C# 类型为';的未处理异常;系统。无效卡斯特例外';,c#,database,linq,visual-studio-2015,C#,Database,Linq,Visual Studio 2015,我的C#VS2015应用程序引发此异常: System.InvalidCastException未处理 消息=无法强制转换 类型的对象 'System.Data.Entity.Infrastructure.DbQuery'1[ADONET4LINQtoENTITIES.Customer]' 键入“System.Data.Objects.ObjectQuery”。 Source=ADONET4LINQtoENTITIES 错误发生在定义查询变量的行中: var customers = from c
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
正在提示异常
我尝试了stringquery=((DbQuery)customers).ToString()
,它在VS2013中工作,但这导致了相同的异常
为什么VS2015会对这些查询方法抛出异常?因为
客户
不是对象查询
您想要的是对象查询
,所以也要删除投影(选择选项
)
改为
var CustomersQuery= from c in de.Customers
where c.Orders.Any(o => o.OrderAmount > 150);
string query = CustomersQuery.ToTraceString();
我通过命名CustomersQuery
消除了命名词汇的歧义
有关更多信息,请参阅。错误消息说明了一切:
客户
属于DbQuery
类型,而不是DbQuery
或ObjectQuery
。在EF工作时和未工作时,您是否使用相同版本的EF@manji说,实现起来很有魅力。我只需要添加:使用System.Data.Entity.Infrastructure
,并在查询
定义中将ToTraceString()
调整为ToString()
。这不是有效的linq语句。在该表单中,查询的select
部分是必需的。