В объекте Domain как получить отфильтрованный набор связанных дочерних объектов без доступа к хранилищу? - PullRequest
0 голосов
/ 27 августа 2009

Я использую NHibernate, и мне нужно настроить отображение на один. Давайте назовем это Customer -> Orders Это все работает, и я могу получить все заказы для клиента.

Теперь я хотел бы отфильтровать эти заказы, скажем, я просто хочу, чтобы заказы были между датами, определенными во время выполнения.

public class Customer
{
    ...

    // mapped from NHibernate mapping file
    public IList<Orders>Orders {get; set; }

    // get a filtered list of orders
    public IList<Orders>GetOrders(DateTime start, DateTime end) { ... }

    ...
}

Так что я мог бы перечислить все заказы и выбрать те, которые я хочу, но я бы хотел отложить фильтрацию для базы данных, так как количество заказов может быть очень большим.

Вопрос в том, можно ли сделать это в файле сопоставления с фильтром? Или мне нужно создать метод в репозитории, чтобы сделать это и получить доступ к этому методу из моего доменного объекта?

Любые другие предложения также приветствуются ....

Большое спасибо

RR

1 Ответ

0 голосов
/ 28 августа 2009

Действительно ли ваш Клиент имеет смысл как совокупный корень Заказа? Это решение, которое только вы можете принять, но, вероятно, это не тот путь, по которому я бы пошел. Вместо этого я бы рассматривал Order как свой собственный сводный корень со ссылкой на клиента, так как я представляю довольно много экранов, где вы напрямую заботитесь о Orders.

Если Орден становится совокупным корнем, он получает собственный репозиторий и возможность прямого опроса. В этот момент вы просто пишете запрос, который отвечает вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...