带有现有存储库的 ASP.NET mvc 脚手架并将 POCO 映射到视图模型

Posted

技术标签:

【中文标题】带有现有存储库的 ASP.NET mvc 脚手架并将 POCO 映射到视图模型【英文标题】:ASP.NET mvc scaffolding with existing repository and mapping POCO to viewmodels 【发布时间】:2013-07-19 18:58:33 【问题描述】:

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

用户界面 ASP.NET MVC POCO My Domain POCO 对象 Repository 使用实体框架和 t4 生成上下文和 POCO 课程

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

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

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

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

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

所以我想做这样的事情 脚手架控制器 -ModelType POCO.User -ControllerName UsersController -DbContextType Repository.Context -RepositoryType Repository.UserRepository -GenerateViewModel

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

感谢任何帮助。 谢谢

【问题讨论】:

【参考方案1】:

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

> scaffold customTemplate Controller 

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

> scaffold customScaffolder ViewModel

请参阅Steven Sanderson's blog posts 了解更多信息。另请参阅此blog post 以获取在 T4 模板中生成 DTO 或 POCO 类的帮助。

【讨论】:

以上是关于带有现有存储库的 ASP.NET mvc 脚手架并将 POCO 映射到视图模型的主要内容,如果未能解决你的问题,请参考以下文章

带有 jquery 验证和 Html.EditorFor 以及不同小数分隔符的 asp.net mvc

是否可以在线发布带有数据库的 asp.net mvc Web 应用程序?

ASP.NET MVC 3 和 NHibernate 脚手架

使用命令行如何在 ASP.NET 中首先从 DB 搭建脚手架 - 而不是 ASP.NET Core MVC?

将 ASP.Net MVC 与 WebForms 相结合

定义脚手架。 (关于动态数据和 ASP.NET MVC)