使用该集合的虚拟字段对IEnumerable集合进行排序

时间:2013-06-25 13:08:27

标签: virtual ienumerable repository-pattern foreign-key-relationship

我有一个包含所有内容列表的存储库:

private Repository<Content> contentRepository

我有一个存储库,其中包含内容的统计信息列表:

private Repository<ContentStatistic> statisticRepository

在内容模型中有一个ContentStatisticID,它将两个类链接为外键

我已经声明了一个名为MostPopularContent的IEnumerable,我正在尝试创建一个最受瞩目的8个视频的列表,因为统计类还有其他信息,例如谁喜欢它等等我将视图计数留在了content.cs类之外

我已经尝试了以下代码,但它出错了,我似乎无法找到解决方法:

MostPopularContent = contentRepository.GetAll()
            .Join(statisticRepository.Get(s => s.Views != 0),
            c => c.ContentStatisticID,
            s => s.ContentStatisticID,
            (c, s) => new Content()
            {
                ContentID = c.ContentID,
                Views = s.Views
            })
            .Take(8)
            .ToList(); 

当我运行时,我收到以下错误:

无法创建“Data.ContentStatistic”类型的常量值。在此上下文中仅支持原始类型或枚举类型。

1 个答案:

答案 0 :(得分:0)

我的问题发生了,因为我没有设置初始化的延迟加载,所以虚拟属性总是以nil的形式返回。我通过向我的ViewModel添加以下代码行克服了这个问题:

this.dbcontext.Configuration.LazyLoadingEnabled = true;

在View本身中,我还为一些更复杂的模型提供了一系列嵌套查询,并且必须将以下段添加到连接字符串中:

MultipleActiveResultSets=True";