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;
}
}
}
根據您的查詢和您的數據庫架構,它看起來像要將完整的數據庫加載到內存中? – BrokenGlass
問題更多的是關於repisotry模式的實現。我需要從數據庫中的一些頂級項目獲得一些信息 - 我想知道是否有必要加載所有項目?這似乎並不正確。 – greenimpala
*您可以決定要加載哪些部分,這就是EF延遲加載和/或Include()查詢的用處 – BrokenGlass