我正在创建自己的自定义 T4 模板,该模板与我的 MVC Web 应用程序中包含的 ADO.NET 实体框架模型(.edmx 文件)集成。
以供参考
请简单浏览一下以下两个网址。
- 斯科特·汉塞尔曼——”T4 代码生成 Visual Studio 最保守的秘密 http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx"
- Visual Web 开发人员团队博客 - ASP.NET MVC 开发人员快速入门指南
我想要实现的目标的简短描述
使用 T4 引擎根据 ADO.NET 实体框架模型的主键生成具有 Action 方法的 MVC 控制器类。
我现在拥有的
- MVC T4 模板文件(例如,Controller.tt、Create.tt 等...)已包含在我的 MVC Web 项目中。
- 我有一个 ADO.NET 实体框架MyModel.edmx 文件在里面 ”Models“ 文件夹。
基于控制器名称(例如“产品控制器”),我想检索[系统类型]的信息“产品”ADO.NET 实体框架模型中的类。
我希望能够检索系统类型信息与 MVC View T4 文件相同(例如编辑.tt)如下。
MvcTextTemplateHost mvcHost = (MvcTextTemplateHost) (Host);
Type type = mvcHost.ViewDataType;
最终目标
我想创建控制器方法代码生成以通过反射从 ADO.NET 实体框架类读取主键信息等
and
为编辑、详细信息、添加操作等生成基本的 CRUD 操作和方法签名...
我被困在哪里
然而,正如你所看到的ASP.NET MVC 开发人员快速入门指南文章,我无法检索[系统类型] for 控制器T4 模板因为MvcTextTemplateHost类仅公开视图数据类型用于创建 MVC 视图的属性。
我尝试通过以下技术检索 [System.Type] 不起作用,因为型号类型被返回为null意味着它找不到类型。
Type modelType = Type.GetType(modelFullyQualifiedName, false, true);
我假设发生这种情况是因为实体框架模型包含在我的 MVC Web 项目中and不包含在已编译的 .DLL 库程序集中。
一些可以帮助我找到解决方案的事情
- 我在哪里可以找到源代码MvcTextTemplateHost班级?如果我至少能找到 DLL 文件,我也许可以看看代码如何加载 Visual Studio 中输入的类型信息“添加视图”对话框窗口.
- 有没有办法通过 Visual Studio IDE API 从我的 T4 模板动态检索 Visual Studio 项目中包含的类的 System.Type 信息?
如果有人能在这个主题上帮助我,我将非常感激,因为这将使我能够为 ADD、EDIT、DETAILS 等的 MVC 控制器操作方法生成 75% 的代码以及基本的 CRUD 操作代码。