Ваша единица работы обычно должна позаботиться об этом, но это зависит от ее реализации, особенно от того, как она обнаруживает изменения. Некоторые реализации единиц работы (например, Hibernate) сохраняют копию агрегата до того, как вы изменили его, поэтому в конце бизнес-транзакции (когда вы вызываете что-то вроде unitOfWork.PersistAll ()), он пытается найти соответствие текущей версии всех объектов ( и коллекции) против оригинальной версии.
Другой способ состоит в том, чтобы сделать ваши доменные объекты более связанными с вашей единицей работы, чтобы сущность уведомляла единицу работы, когда что-то изменяется (т. Е. Метод order.removeOrderLine уведомлял бы единицу работы об изменении). *
Существует несколько способов реализации обнаружения изменений UoW. Взгляните на несколько реализаций hibernat для вдохновения.