支持的一个项目刚刚从LINQ到SQL来LINQ到实体切换,现在我得到的错误LINQ to Entities不支持LINQ表达式节点类型'ArrayIndex'。但通过LINQ到SQL
The LINQ expression node type 'ArrayIndex' is not supported in LINQ to Entities.
这条线:
var a = db.Table.Single(d => d.Date == dates[0]);
(定影它在该特定情况下是容易的,因为在
var firstDate = dates[0];
var a = db.Table.Single(d => d.Date == firstDate);
)
但为什么这在linq-to-sql中工作,但不在linq-to-entities中? 他们是否让linq-to-entities比linq-to-sql更糟? 我错过了什么?
的LINQ to SQL和LINQ to实体完全分开开发,这里没有相关的共享代码。它在LINQ to SQL中需要额外的支持,乍看之下没有任何意义(看起来你试图将'dates'作为数组参数传递,并让服务器读取第一个元素),因此, m猜测它不是很常用,因此从来没有考虑过LINQ to Entities。由于这是一种猜测,我不会将其作为答案发布。 – hvd 2013-03-18 19:17:49
它看起来像一个bug。在转换为SQL之前,表达式树应首先解析为最简单的表达式。这实际上是@dontomaso通过预先计算日期[0]所做的,但不应该手动执行(特别是对于这样一个简单的表达式)。 – Ackroydd 2013-03-18 23:20:00