TSqlObject没有ContextObject属性?

时间:2014-09-23 19:37:25

标签: visual-studio t4 sql-server-data-tools envdte

我试图创建一个T4模板,该模板生成用于调用我的解决方案中另一个项目中包含的存储过程的源代码。我能够成功枚举解决方案中的.sql文件,将它们添加到TSqlModel,并使用该模型将存储过程列表检索为TSqlObject个实例。现在,我需要枚举每个存储过程的参数,这就是我被挂断的地方。

当我调试模板时,我可以看到TSqlObject实例具有ContextObject属性,此属性包含生成我的代码所需的参数列表。但是,当我尝试从我的模板访问此属性时,编译器会抱怨该属性不存在:

  

错误1编译转换:' Microsoft.SqlServer.Dac.Model.TSqlObject'不包含' ContextObject'的定义没有扩展方法' ContextObject'接受类型' Microsoft.SqlServer.Dac.Model.TSqlObject'的第一个参数。可以找到(您是否缺少using指令或程序集引用?)d:\ Code \ cs \ test_sproccodegen \ CallingProject \ sproc_template.tt 34 111 CallingProject

我可以在调试时从立即窗口中访问此ContextObject属性,但在编译时它不可用。

enter image description here

我做错了什么?

2 个答案:

答案 0 :(得分:4)

该属性未列出in the API,这可能意味着它是内部或私有的。只有公开和受保护的可访问成员才会包含在文档中。

在JustDecompile中检查它,你可以看到它实际上是内部

boom, internal

答案 1 :(得分:1)

这是威尔在问题评论中提到的内部方法。您应该使用公共API。以下文档应该可以帮助您入门: