gpt4 book ai didi

asp.net-mvc - MVC T4 MvcTextTemplateHost和自定义的“ Controller ” T4模板

转载 作者:行者123 更新时间:2023-12-03 11:28:40 27 4
gpt4 key购买 nike

我正在创建自己的自定义T4模板,该模板与MVC Web应用程序中包含的ADO.NET实体框架模型(.edmx文件)集成。

以供参考

请简要介绍以下两个URL。


斯科特·汉瑟曼-“ T4 Code Generation Visual Studio Best Kept Secret
Visual Web开发人员团队博客-ASP.NET MVC开发人员快速入门指南


我要实现的目标的简短描述

使用T4引擎基于ADO.NET实体框架模型的主键,通过Action方法生成MVC控制器类。

我现在拥有的


MVC T4模板文件(例如Controller.tt,Create.tt等)已包含在我的MVC Web项目中。
我在“模型”文件夹中有一个ADO.NET实体框架MyModel.edmx文件。


基于控制器名称(例如“ ProductController”),我想从ADO.NET实体框架模型中检索“产品”类的[System.Type]信息。
我希望能够以与MVC View T4文件(例如Edit.tt)相同的方式检索System.Type信息,如下所示。

MvcTextTemplateHost mvcHost = (MvcTextTemplateHost) (Host);
Type type = mvcHost.ViewDataType;


最终目标

我想创建Controller方法代码生成以通过反射从ADO.NET实体框架类读取主键信息等。

为编辑,详细信息,添加操作等生成基本的CRUD操作和方法签名...

我被困在哪里

但是,从ASP.NET MVC开发人员快速入门指南文章中可以看到,我无法检索Controller T4模板的[System.Type],因为MvcTextTemplateHost类仅公开用于创建MVC视图的ViewDataType属性。

我尝试通过以下技术检索[System.Type]的方法无效,因为modelType返回为null表示无法找到类型。

Type modelType = Type.GetType(modelFullyQualifiedName, false, true);


我假设发生这种情况是因为实体框架模型包含在我的MVC Web项目中,而不包含在编译的.DLL库程序集中。

一些可以帮助我找到解决方案的方法


在哪里可以找到MvcTextTemplateHost类的源代码?如果至少可以找到DLL文件,则可能可以查看代码如何加载在Visual Studio“添加视图”对话框窗口中输入的类型信息。
有没有一种方法可以通过Visual Studio IDE API从T4模板动态检索Visual Studio项目中包含的类的System.Type信息?


如果有人可以在这个主题上为我提供帮助,我将不胜感激,因为这将使我能够为AVC,ADD,EDIT,DETAILS等生成MVC控制器操作方法的代码的75%,以及基本的CRUD操作代码。

最佳答案

您可以使用Reflector从C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ Microsoft.VisualStudio.Web.Extensions.dll程序集反编译MvcTextTemplateHost的源代码。
是的,您可以使用CodeModel从Visual Studio加载类型元数据。但是,最好直接从edmx文件中读取它。无论哪种方式,这都是一项艰巨的任务。 VS 2010中可能有一个可用示例,以EF T4模板的形式进行。

关于asp.net-mvc - MVC T4 MvcTextTemplateHost和自定义的“ Controller ” T4模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1128003/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com