gpt4 book ai didi

asp.net-mvc - MVC T4 MvcTextTemplateHost 和自定义 "Controller"T4 模板

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

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

以供引用

请简单看一下以下两个网址。

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

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

    使用 T4 引擎基于 ADO.NET Entity Framework 模型的主键生成具有 Action 方法的 MVC Controller 类。

    我现在拥有的
  • MVC T4 模板文件 (例如,Controller.tt、Create.tt 等...)已包含在我的 MVC Web 项目中。
  • 我有一个 ADO.NET Entity Framework MyModel.edmx 文件 在“ 模型 ”文件夹中。

  • 基于 Controller 名称 (例如“ProductController”) ,我想检索 [系统类型] 的信息《产品》 ADO.NET Entity Framework 模型中的类。
    我希望能够检索 系统类型 信息与 MVC 查看 T4 文件的方式相同 (例如 Edit.tt)如下。
    MvcTextTemplateHost mvcHost = (MvcTextTemplateHost) (Host);
    Type type = mvcHost.ViewDataType;

    最终目标

    我想创建 Controller 方法代码生成以通过反射从 ADO.NET Entity Framework 类中读取主键信息等

    为 EDIT、DETAILS、ADD 操作等生成基本的 CRUD 操作和方法签名...

    我被困在哪里

    但是,正如您从 中看到的那样ASP.NET MVC 开发人员快速入门指南 文章,我无法检索 [系统类型] 对于 Controller T4 模板因为 MvcTextTemplateHost 类仅公开 查看数据类型 用于创建 MVC View 的属性。

    我尝试通过以下技术检索 [System.Type] 不起作用,因为 型号返回为 意味着它找不到类型。
    Type modelType = Type.GetType(modelFullyQualifiedName, false, true);

    我假设发生这种情况是因为 Entity Framework 模型包含在我的 MVC Web 项目 中。和 不包含在已编译的 .DLL 库程序集中。

    一些可以帮助我找到解决方案的事情
  • 我在哪里可以找到 的源代码MvcTextTemplateHost 类(class)?如果我至少能找到 DLL 文件,我大概可以看看代码如何加载在 Visual Studio 中输入的类型信息。 “添加 View ”对话框窗口 .
  • 有没有办法通过 Visual Studio IDE API 从我的 T4 模板中动态检索 Visual Studio 项目中包含的类的 System.Type 信息?

  • 如果有人能在这个主题上帮助我,我将不胜感激,因为这将允许我为 ADD、EDIT、DETAILS 等的 MVC Controller 操作方法生成 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/

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