带有现有存储库的 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 脚手架