В шаблоне DDD следует объединить единицу работы с хранилищем? Я видел несколько различных примеров, в том числе репозиторий, который реализует единицу рабочего интерфейса, репозиторий, который реализует поведение для самой единицы работы и репозиторий, обладающий свойством, представляющим единицу работы, чтобы он мог несколько экземпляров репозитория в течение жизни UoW. В случае с последним это похоже на анти-шаблон ... то есть, должен ли потребитель действительно знать, чтобы поделиться экземпляром UoW через экземпляры репозитория? Не следует ли инкапсулировать и не подвергаться воздействию потребителя?Должен ли репозиторий реализовать UnitOfWork?
Я хотел бы услышать некоторый вклад в преимущества этих разных подходов друг к другу и почему.
Спасибо.
Итак, вы поддерживаете стратегию, основанную на услугах, больше, чем хранилище? То есть транзакция на уровне операции: service.Save (объект), не использующая (var repo = new Repo()) {repo.Add (объект); repo.Commit(); }? – Jeff
@ JeffN825 Я поддерживаю идею о том, что совокупные корни должны определять границы транзакций. Таким образом, область применения всегда будет методом 'repository.Save()' long, и вам не понадобится единица работы. –