好吧,我一定是在做一些愚蠢的事情,但这不应该吗?我有以下三个列表:
var commonViews = (from v in context.TPM_VIEWS where v.VIEWID < 0 select v); // IQueryable<TPM_VIEWS>
var ownedViews = (from v in context.TPM_VIEWS where v.OWNERID == userId && v.VIEWID > 0 select v); // IQueryable<TPM_VIEWS>
var sharedViews = (from v in context.TPM_USER.Include("TPM_VIEWS2") where v.USERID == userId select v).First().TPM_VIEWS2; // EntityCollection<TPM_VIEWS>
每个列表都有正确的值和计数。我可以返回以下列表中的任何一个:
return commonViews.ToList();
我可以返回以下列表中的任意两个:
return commonViews.Concat(ownedViews).ToList();
但是,当我尝试返回所有三个时:
return commonViews.Concat(ownedViews).Concat(sharedViews).ToList();
我得到了例外:
无法创建“Entity.TPM_VIEWS”类型的常量值。此上下文仅支持原始类型或枚举类型。
我究竟做错了什么?这三个值确实是可枚举的。大多数情况下,我问这个问题是因为这是保证我会在发布后 30 秒内注意到问题的最佳方式。
更新:
我 93% 确定问题出在这里:
var sharedViews = (from v in context.TPM_USER.Include("TPM_VIEWS2") where v.USERID == userId select v).First().TPM_VIEWS2;
这看起来像一个可枚举的TPM_VIEWS
对象列表,我可以调用ToList()
它并获取正确的数据,但它与其他列表不能很好地配合。
更新 2:
这实际上有效。谁能告诉我原因!
commonViews.ToList().Concat(ownedViews.ToList()).Concat(sharedViews.ToList()).ToList();