ASP.NET MVC леса с существующим хранилищем и сопоставление POCO для моделей представления

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

  • Пользовательский интерфейс ASP.NET MVC
  • POCO My Domain POCO объекты
  • Репозиторий, использующий Entity Framework и T4 для генерации контекста и классов POCO

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

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

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

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

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

Поэтому я хочу сделать что-то вроде этого scaffold Controller -ModelType POCO.User -ControllerName UsersController -DbContextType Repository.Context -RepositoryType Repository.UserRepository -GenerateViewModel

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

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

1 ответ

Решение

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

> scaffold customTemplate Controller 

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

> scaffold customScaffolder ViewModel

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