Расположение бизнес-логики всегда сложно при использовании шаблона MVVM. Вопрос всегда в том, это модель или модель?
Полагаю, это зависит от того, где вы проверяете дублирование.
Если вы пытаетесь запретить пользователю дублировать данные, представленные в представлении, вы должны выполнить проверку в связанной модели представления.
Если вы пытаетесь запретить пользователю дублировать данные, присутствующие либо в модели, либо в связанном слое данных (чтение БД), то это следует выполнить в домене модели.
Единственное, что вам нужно иметь в виду, - это то, что ваш код представляет данные в представление о дублировании, но это зависит от представления, чтобы решить, следует ли его представлять.
Довольно часто я помещаю большое количество бизнес-логики и «вспомогательных» функций в отдельный проект библиотеки классов и вызываю функциональные возможности там, где это лучше всего. Это может упростить переключение функциональности с модели представления на модель и наоборот.
Вы видели страницы шаблонов msdn MVVM? Посмотрите здесь .
Помните, однако, что, как и во всех вещах, должен быть принят прагматический подход. Могут быть случаи, когда бизнес-логика устройства находится в коде View позади, но она всегда должна быть минимальной.