2010-07-23 4 views
0

Я все еще в процессе обучения DDD. Я пишу приложение ASP.NET MVC, и у меня есть несколько выпадающих списков, которые мне нужно заполнить из базы данных. Я создал сопоставленные объекты для каждого типа (статус, результат и т. Д.)Заселение выпадающих списков/списков выбора

Я не могу понять, откуда я должен получать данные. Создание отдельного репозитория для каждого типа списка выбора кажется больным, когда вам приходится вводить множество репозиториев в контроллеры MVC. Кроме того, все эти списки выбора доступны только для чтения, поэтому репозиторий в списке выбора кажется излишним. Создание единого суперрепозитория для всех типов списков списков тоже не кажется правильным, поскольку репозиторий должен быть похож на набор одного типа объектов.

Я немного читал о CQS и имею слой отчетности, но я не знаю, как это будет реализовано правильно.

ответ

1

Прежде всего - даже не смотрите на CQRS, если вы не чувствуете себя комфортно с DDD. Я имею в виду - смотрите, но не пытайтесь реализовать с ним настоящий проект. Все же.

Когда мы не отделяем чтение от сторон записи нашего приложения, репозиторий немного перепутался с причиной смешанных обязанностей.

С одной точки зрения - он несет ответственность за сохранение совокупного корня, от других - он также отвечает за отчетность.

Это означает - нет ничего плохого (по крайней мере, на мой взгляд), если репозиторий содержит функции для извлечения данных только для целей презентации.

В вашем случае - я бы просто построил выпадающие списки, используя данные из соответствующих репозиториев. Таким образом, выпадающий список продуктов будет принимать данные от ProductRepository.Find(bySomething) (или Repository<Product>(bySomething) в случае, если я решу использовать общий репозиторий).

P.s. Будьте предупреждены, что DDD не так много касается шаблонов. Это больше о вездесущем языке и явлении вашей модели домена.