Лично у меня нет проблем с тем, что шаблон единицы работы является частью решения. Очевидно, вам это нужно только для CUD в CRUD. Однако тот факт, что вы реализуете шаблон UoW, лишь указывает на то, что у вас есть набор операций, которые нужно выполнять как пакет. Это немного отличается от того, что для необходимо , чтобы быть частью транзакции. Если вы достаточно хорошо абстрагируете свои репозитории, ваша реализация UoW может не зависеть от используемого вами механизма поддержки - будь то база данных, XML и т. Д.
Что касается конкретного вопроса, я думаю, что разница между методом один и методом два тривиальна, если ни по какой другой причине, кроме большинства экземпляров метода два, не содержится проверка, установлен ли идентификатор. Если установлено, обрабатывать как обновление, иначе рассматривать как вставку. Эта логика часто встроена в репозиторий и, на мой взгляд, больше для упрощения предоставляемого интерфейса. Цель репозитория - разбить объекты между потребителем и источником данных и устранить необходимость непосредственного знания источника данных. Я использую второй метод, потому что доверяю простой логике определения идентификатора, а не необходимости полагаться на отслеживание состояний объекта во всем приложении.
Тот факт, что терминология для использования репозитория так похожа как на доступ к данным, так и на сбор объектов, приводит к путанице. Я просто отношусь к ним как к своему первоклассному гражданину и делаю то, что лучше для области. ; -)