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

相关问题