ASP.NET mvc脚手架与现有存储库和映射POCO到视图模型

时间:2013-07-20 15:44:27

标签: repository-pattern t4 asp.net-mvc-scaffolding asp.net-mvc-viewmodel t4scaffolding

我有一个包含三个项目的asp.net mvc解决方案

  • UI ASP.NET MVC
  • POCO 我的域名POCO对象
  • 存储库使用实体框架和t4生成上下文和POCO 类

我希望我的UI项目使用ViewModels而不是POCO类。

我需要为UI和For Repository单独做脚手架(我从存储库脚手架开始,然后自定义一些代码然后我将搭建uicontrollers视图视图模型)

我在存储库项目中执行Repository脚手架,如下所示:   scaffold Repository -ModelType POCO.User -DbContextType Context 这就像一个魅力

但是在我使用控制器脚手架的默认mvcscaffolding模板中: scaffold Controller -ModelType POCO.User -ControllerName UsersController -DbContextType Repository.Context -Repository

  • 它将检测到用户已经在上下文中,因此将跳过它(这很好)。
  • 它将使用POCO.User作为模型来支持wiews(这不是我想要的,我希望它生成ViewModel类并使用它)
  • 它会生成存储库(因为我已经在存储库项目中存储了存储库,所以不太好)
  • 它将使用创建的存储库搭建控制器并将POCO发送到视图(不太好)

所以我想做这样的事情 scaffold Controller -ModelType POCO.User -ControllerName UsersController -DbContextType Repository.Context -RepositoryType Repository.UserRepository -GenerateViewModel

将skipp存储库创建,但在控制器中使用它,从poco生成ViewModel并使用automapper制作mappion,并在视图中使用viewmodel。

任何帮助从哪里开始都是apreciated。 感谢

1 个答案:

答案 0 :(得分:2)

您要求做的事情是有道理的,但不是开箱即用的。您可以使用此命令覆盖T4模板

> scaffold customTemplate Controller 

但是要跨项目工作,您需要深入了解powershell并创建自己的脚手架

> scaffold customScaffolder ViewModel

有关详细信息,请参阅Steven Sanderson's blog posts。另请参阅此blog post以获取有关在T4模板中生成DTO或POCO类的帮助。