从T4模板引用Code First DbContext?

时间:2012-03-03 06:02:16

标签: ef-code-first t4

是否有人有样本用于从T4模板引用Code First DbContext?

我发现了一些使用.dbml作为源的T4示例以及引用数据库的示例。我想循环并为上下文中的所有类构建javascript文件。我很难搞清楚如何引用EnvDTE变量来获取DbContext。从那里我将转换为ObjectContext并循环遍历类以生成代码。

任何想法或例子?

1 个答案:

答案 0 :(得分:1)

信息方面,您可以将包含程序集的Code First编译为.dll,然后在T4进程中加载​​DLL并通过反射从中读取数据。

我们在获得数据库=>的过程中采用了这种方法。序列化类,但不能干扰T4阶段;只有在对序列化类进行代码生成之后。在这种情况下,编译它然后通过反射阅读它会更容易。

如果你采用这种方法,你必须先处理这样一个事实,即你需要先构建部分应用程序,然后使用T4生成来完成剩下的工作。如果您正在创建Javascript文件,它可能会更容易。

您可以将基于T4的反射设置为“预处理”,以便您可以在构建后的脚本中运行它。

编辑:增加了研讨会,展示了案例演示。

http://abstractiondev.wordpress.com/2012/03/09/microsoft-techdays-2012-finland-adm-materials/

从Github下载演示,并查看“T4 Demos.sln” - 解决方案,Advanced7.tt演示。它从给定的程序集名称解析类型和属性。