我在一台PC上得到这个错误,但在另一台PC上没有。两者都连接到本地SQLExpress 2008 R2数据库,该数据库在两台机器上是相同的。两台机器都有VS2010 SP1和EF4.1(包含在工具更新中)。这是一个运行在卡西尼上的mvc Web应用程序项目:
[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
问题的根源在于x => !tagIds.Contains(x.Id)
,因为"Contains"不能通过EF转换为T-SQL。尝试搜索异常以获取更多信息。
两个本地数据库中的数据不相同,这意味着tagIds
在一台机器上返回null,而在另一台机器上返回null。错误信息不是很有用,但这就是导致它的原因。
在此场景中使用Contains
在EF4中是可以的。