EF中具有外键关系的存储库模式

时间:2011-09-24 20:18:25

标签: asp.net-mvc-3 entity-framework

我构建了一个数据库,并使用Entity Framework生成了一些域模型类。基本上VideCollection是一组视频,我想在某些页面上显示每个视频集以及它的视频。在存储库模式之后,我为视频集合创建了一个存储库。我可以从数据库中提取VideoCollection对象。问题是我需要“修复”对象以添加相应的视频。这是正确的做法吗?如果是这样,那么我需要“修复”视频以引入他们的评论等,从而导致巨大的链条。我理解LINQ延迟查询,但这似乎没有必要从数据库中提取太多信息。我正在使用ASP.NET MVC3。 如果有人能指出我正确的方向,那将非常感激!

using System;
using System.Linq;
using VideoCart.Domain.Abstract;
using VideoCart.Domain.Entities;

namespace VideoCart.Domain.Concrete
{
public class EFVideoRepository : IVideoRepository 
{
    private readonly EFDbContext _context = new EFDbContext();

    public IQueryable<VideoCollection> GetVideoCollections()
    {
        IQueryable<VideoCollection> videoCollections = _context.VideoCollections;
        foreach (var videoCollection in videoCollections)
        {
            videoCollection.Videos = _context.Videos.Where(x => x.VideoCollectionId == videoCollection.Id);
        }
        return videoCollections;
    }
}
}

1 个答案:

答案 0 :(得分:2)

我不确定这是否是您想要的,但是,您可以使用include方法指定要提取的相关对象并包含在查询结果中。