2011-09-24 70 views
2

我構建了一個數據庫並使用實體框架來生成一些域模型類。基本上VideCollection是一個視頻集合,我想在某個頁面上顯示每個視頻集合以及它的視頻。在存儲庫模式之後,我爲視頻集合製作了一個存儲庫。我可以從數據庫中提取VideoCollection對象。問題是我需要'修復'對象來添加相應的視頻。這是做這件事的正確方法嗎?如果是這樣,那麼我需要'修復'視頻來引入他們的評論等等,從而形成一個巨大的鏈條。我瞭解LINQ延遲查詢,但似乎沒有必要從數據庫中提取這麼多信息。我正在使用ASP.NET MVC3。 如果任何人都可以指出我正確的方向,將不勝感激!在EF中使用外鍵關係的存儲庫模式

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; 
    } 
} 
} 
+0

根據您的查詢和您的數據庫架構,它看起來像要將完整的數據庫加載到內存中? – BrokenGlass

+0

問題更多的是關於repisotry模式的實現。我需要從數據庫中的一些頂級項目獲得一些信息 - 我想知道是否有必要加載所有項目?這似乎並不正確。 – greenimpala

+1

*您可以決定要加載哪些部分,這就是EF延遲加載和/或Include()查詢的用處 – BrokenGlass

回答

2

我不知道這是否是你想要的,但是,你可以使用include方法來指定要拉出來,並與查詢結果包括相關的對象。