Насколько я понимаю, класс UnitOfWork предназначен для представления концепции бизнес-транзакции в предметной области. Он не должен напрямую представлять транзакцию базы данных, которая является деталью только одной возможной реализации.
Вопрос. Почему так много документации по шаблону Unit of Work ссылается на методы "Commit" и "Rollback"?
Эти концепции ничего не значат для предметной области или для экспертов в предметной области. Бизнес-транзакция может быть "завершена", поэтому UnitOfWork должен предоставлять метод "Complete". Точно так же вместо метода «Откат» не следует ли моделировать его как «Очистить»?
Обновление:
Ответ. Оба приведенных ниже ответа верны. Есть два варианта UoW: регистрация объекта и регистрация вызывающего абонента. При регистрации объекта откат служит для отмены изменений всех объектов в памяти. При регистрации вызывающего объекта Rollback служит для очистки всех записанных изменений, так что последующий вызов Commit ничего не сделает.