Как реализовать свойство «Последние 20 кое-что» в вашем доменном классе? - PullRequest
0 голосов
/ 20 ноября 2008

Допустим, мне нужно реализовать модель домена для StackOverflow.

Если я делаю ORM, как я могу определить (и отобразить) свойство для получения "последних комментариев" и других "последних" вещей? Мне кажется, это должно быть отражено в модели предметной области.

Иногда мне могут понадобиться "все комментарии", хотя ...

Ответы [ 2 ]

2 голосов
/ 20 ноября 2008

Вы бы запросили в своем хранилище последние комментарии определенного пользователя. что-то вроде

IList<Comment> recentComments = repository.GetRecentComments(user,20);

Вы МОЖЕТЕ сделать это в модели, но в зависимости от того, сколько комментариев вы ожидаете получить, я бы избежал этого. Модель не должна знать, как заполнить себя, это работа хранилища; однако, если вы используете что-то вроде NHibernate, оно будет там.

public class User{

 public IList<Comment> Comments { get;set;}

 public IList<Comment> GetRecentComments()
 {
   // Logic
 }


}

В этой реализации вы всегда будете загружать ВСЕ комментарии, чтобы получить последние 20. Ничего страшного, если есть только 50 комментариев, но если есть 5000 комментариев, у вас немало накладных расходов. 1007 *

2 голосов
/ 20 ноября 2008

Мой ORM-инструмент может зависеть от меня, но я рассматриваю это как запрос, а не как свойство домена. Домен содержит ассоциации, а хранилище инкапсулирует запросы, такие как описываемый вами.

...