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.