Скаффолдинг ASP.NET mvc с существующим репозиторием и сопоставление POCO с моделями просмотра

У меня есть решение asp.net mvc с тремя проектами

  • Интерфейс ASP.NET MVC
  • POCO Объекты POCO "Мой домен"
  • Репозиторий с использованием Entity Framework и t4 для создания контекста и классов POCO

Я хочу, чтобы мой проект пользовательского интерфейса использовал ViewModels, а не классы POCO.

Мне нужно сделать скаффолдинг для пользовательского интерфейса и для репозитория независимо (я начну с каркаса репозитория, а затем настрою некоторый код, а затем создам модель представления uicontrollers)

Я создаю леса репозитория в проекте репозитория следующим образом: Репозиторий скаффолдов -ModelType POCO.User -DbContextType Context это работает как шарм

Но в шаблоне mvcscaffolding по умолчанию, когда я использую леса контроллера: scaffold Controller -ModelType POCO.User -ControllerName UsersController -DbContextType Repository.Context -Repository

  • Он обнаружит, что пользователь уже находится в контексте, поэтому пропустит его (это хорошо).
  • Он будет создавать шаблоны, используя POCO.User в качестве модели (это не то, что я хочу, я хочу, чтобы он генерировал класс ViewModel и использовал его)
  • Он сгенерирует репозиторий (это тоже нехорошо, так как у меня уже есть репозиторий в проекте репозитория)
  • Он будет формировать контроллер с созданным репозиторием и отправлять POCO в представления (тоже нехорошо)

Итак, я хочу сделать что-то вроде этого эшафота Controller -ModelType POCO.User -ControllerName UsersController -DbContextType Repository.Context -RepositoryType Repository.UserRepository -GenerateViewModel

который будет пропускать создание репозитория, но использовать его в контроллерах, которые генерируют ViewModels из poco и делают mappion, например, с помощью automapper, и используют модель представления в представлении.

Любая помощь, с чего начать, приветствуется. Спасибо


person riadh gomri    schedule 20.07.2013    source источник


Ответы (1)


То, что вы просите сделать, имеет смысл, но недоступно из коробки. Вы можете переопределить шаблоны T4 с помощью этой команды

> scaffold customTemplate Controller 

Но для работы над проектами вам нужно погрузиться в powershell и создать свой собственный скаффолдер.

> scaffold customScaffolder ViewModel

См. сообщения в блоге Стивена Сандерсона для получения дополнительной информации. . См. также этот сообщение в блоге для помощи в создании классов DTO или POCO в шаблонах T4.

person What Would Be Cool    schedule 20.07.2013