В приложениях WinForm MVC, которые я создал, я обычно не позволяю контроллеру создавать какие-либо экземпляры (я пытаюсь не допустить ключевое слово «new» в мои контроллеры).
Если мне нужен объект, я запрашиваю у него службу, и внутренне эта служба собирается извлечь этот объект из источника данных (хранилища или тому подобное), или в случае нового объекта он, вероятно, будет использовать какой-то вид фабрики, чтобы получить новый объект (со всеми необходимыми предварительно заполненными свойствами, уже установленными по умолчанию, запускаются правила и т. д.).
Мне нравится думать о такой проблеме: как бы я сделал эту работу (и сделал бы ее многократно используемой), если бы у меня не было графического интерфейса для представления, а вместо этого был ввод из командной строки для мой взгляд? Логика для создания / добавления / удаления / обновления модели должна быть где-то в вашем домене, а не в контроллере. Тогда контроллер просто становится посредником между моделью и представлением. Представление становится механизмом ввода-вывода, который является просто более симпатичной версией интерфейса командной строки.
Надеюсь, это имеет смысл.