支持的一個項目剛剛從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