在一台机器上发生EF4.1错误,而在另一台机器上发生错误
我在一台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
两个本地数据库中的数据不一样,这意味着tagIds
在一台机器上返回null,而不在另一台机器上。错误信息不是很有帮助,但是这是造成它的原因。在这种情况下使用Contains
在EF4中很好。
的问题的根源将是x => !tagIds.Contains(x.Id)
如“包含”不能由EF被翻译成T-SQL。尝试搜索异常以获取更多信息。
为什么会在一种情况下工作,而不是另一种情况? (看似基于post) – 2011-04-21 14:57:53
该错误相当具有解析lambda失败的特点。我怀疑代码实际上并不在一台机器上运行,因此不会失败。 – 2011-04-21 15:49:28
您发布的代码是否包含在“if”中或可能阻止其在“它正常工作”的机器上执行? – 2011-04-21 15:50:09