Мой проект структурирован следующим образом:
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;
}
Допустим, что GetPostFeeds (5) должен возвращать 5 последних каналов. Поднявшись вверх по списку, разве он не извлекает каждый пост из базы данных из GetPosts (), просто чтобы извлечь из него 5?
Если каждое сообщение, скажем, 5 КБ из базы данных, и есть 1 миллион записей. Разве это не будет 5 ГБ оперативной памяти, используемой для вызова GetPostFeeds ()?
Это так, как это происходит? Должен ли я вернуться к своему DAL и написать запросы, которые возвращают только то, что мне нужно?