我的項目結構如下:MVC和存儲庫模式的數據效率
DAL
public IQueryable<Post> GetPosts()
{
var posts = from p in context.Post select p;
return posts;
}
服務
public IList<Post> GetPosts()
{
var posts = repository.GetPosts().ToList();
return posts;
}
//Returns a list of the latest feeds, restricted by the count.
public IList<PostFeed> GetPostFeeds(int latestCount)
{
List<Post> post - GetPosts();
//CODE TO CREATE FEEDS HERE
return feeds;
}
比方說(5)應該在GetPostFeeds返回5個最新的提要。通過列表,不是從GetPosts()中的數據庫中拉出每一篇文章,只是從中提取5篇文章?
如果每篇文章都說從數據庫5kb,並有100萬條記錄。不是說每次調用GetPostFeeds()時都會使用5GB內存?
這是它發生的方式?我應該回到我的DAL並編寫只返回我需要的查詢嗎?
您應該考慮爲Post提取POCO樣式的接口,以便調用Service層的層不必知道Post類。我猜測Post是一個Linq-to-SQL類,有表映射和東西裝飾?存儲庫模式的好處之一是完全抽象出你的數據實現,如果你的主層必須引用你的數據對象,你就不能這樣做。 – 2010-04-10 01:33:41