0

我在一臺PC上收到此錯誤,但沒有收到另一臺PC上的錯誤。兩者都連接到兩臺機器上相同的本地SQLExpress 2008 R2數據庫。兩臺機器都有VS2010 SP1和EF4.1(包含在工具更新中)。它是在Cassini中運行的MVC3 Web應用程序項目:在一臺機器上發生EF4.1錯誤,而在另一臺機器上發生錯誤

[NotSupportedException:無法創建類型爲'System.Collections.Generic.IEnumerable`1的常量值。在這種情況下,只支持原始類型(如Int32,String和Guid)。]

我不能爲我的生活找出原因 - 爲什麼會出現這種情況 - 它發生在下面的Attach()

IQueryable<Tag> tags = db.Tags.Where(x => !tagIds.Contains(x.Id) && x.Questions.Any(y => y.Id == question.Id)); 
question.Tags.Attach(tags); 

我能想到的唯一的區別就是一臺機器是32位和64等,但我不知道如何確定這是否是出於任何原因的問題。

任何想法?

TIA

+0

您發佈的代碼是否包含在「if」中或可能阻止其在「它正常工作」的機器上執行? – 2011-04-21 15:50:09

回答

0

兩個本地數據庫中的數據不一樣,這意味着tagIds在一臺機器上返回null,而不在另一臺機器上。錯誤信息不是很有幫助,但是這是造成它的原因。在這種情況下使用Contains在EF4中很好。

0

的問題的根源將是x => !tagIds.Contains(x.Id)如「包含」不能由EF被翻譯成T-SQL。嘗試搜索異常以獲取更多信息。

+0

爲什麼會在一種情況下工作,而不是另一種情況? (看似基於post) – 2011-04-21 14:57:53

+0

該錯誤相當具有解析lambda失敗的特點。我懷疑代碼實際上並不在一臺機器上運行,因此不會失敗。 – 2011-04-21 15:49:28

相關問題