2010-12-13 2 views
3

В шаблоне DDD следует объединить единицу работы с хранилищем? Я видел несколько различных примеров, в том числе репозиторий, который реализует единицу рабочего интерфейса, репозиторий, который реализует поведение для самой единицы работы и репозиторий, обладающий свойством, представляющим единицу работы, чтобы он мог несколько экземпляров репозитория в течение жизни UoW. В случае с последним это похоже на анти-шаблон ... то есть, должен ли потребитель действительно знать, чтобы поделиться экземпляром UoW через экземпляры репозитория? Не следует ли инкапсулировать и не подвергаться воздействию потребителя?Должен ли репозиторий реализовать UnitOfWork?

Я хотел бы услышать некоторый вклад в преимущества этих разных подходов друг к другу и почему.

Спасибо.

ответ

2

На этом есть discussion.

И я лично agree, что UoW следует избегать полностью. То же самое с родовыми репозиториями.

+0

Итак, вы поддерживаете стратегию, основанную на услугах, больше, чем хранилище? То есть транзакция на уровне операции: service.Save (объект), не использующая (var repo = new Repo()) {repo.Add (объект); repo.Commit(); }? – Jeff

+0

@ JeffN825 Я поддерживаю идею о том, что совокупные корни должны определять границы транзакций. Таким образом, область применения всегда будет методом 'repository.Save()' long, и вам не понадобится единица работы. –

Смежные вопросы