c# - T4代问题
问题描述
我正在尝试学习一些 C# 并来自数据背景。现在我想生成一些基于数据库的 SQL 代码。我正在使用https://damieng.com/blog/2009/11/06/multiple-outputs-from-t4-made-easy-revisited中的示例。当我从 Github ( https://github.com/DanielGasson/t4-examples ) 下载解决方案时,它可以工作。
但我对此有一些问题。我希望有人可以帮助我,因为我已经尝试了很多事情,但我对这不起作用感到沮丧......所以也许有人可以通过一些提示让我回到正轨:
我的问题:
问题 1 - 添加 SQL 连接 我想添加一些 SQL 来检索一些必须生成的数据,但现在我有一个 C# 项目,当我尝试添加一些 SQL 连接代码时出现问题,例如:
SqlConnection conn = new SqlConnection(connectionString);
string selectQueryTables = "select * from [config].[TargetTables]";
SqlDataAdapter commandTables = new SqlDataAdapter(selectQueryTables,conn);
这会导致此错误:找不到类型或命名空间名称“SqlConnection”(您是否缺少 using 指令或程序集引用?) T4CustomFileGeneration
我尝试添加 NuGet System.Data.SqlClient 但这并没有解决任何问题。
我究竟做错了什么?
编辑:在@Zer0 的提示之后,我有这个:
<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ assembly name="EnvDTE"#>
<#@ assembly name="System.Core" #>
<#@ import namespace="System" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Collections.Generic"#>
<#@ import namespace="System.Linq"#>
<#@ import namespace="System.Text"#>
<#@ import namespace="Microsoft.VisualStudio.TextTemplating"#>
<#@ output extension="/" #>
<#@ template language="C#v3.5" hostspecific="True"#>
<#@ include file="Manager.ttinclude"#>
using System.Data.SqlClient;
<#
var manager = new Manager(Host, GenerationEnvironment, true, "T4CustomFileGeneration")
{
OutputPath = Path.GetDirectoryName(Host.TemplateFile),
};
#>
<#
string connectionString = "";
System.Data.SqlClient.SqlConnection conn = new SqlConnection(connectionString);
....
所以这两种解决方案都存在,但错误仍然存在:
完整代码:
<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ assembly name="EnvDTE"#>
<#@ assembly name="System.Core" #>
<#@ import namespace="System" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Collections.Generic"#>
<#@ import namespace="System.Linq"#>
<#@ import namespace="System.Text"#>
<#@ import namespace="Microsoft.VisualStudio.TextTemplating"#>
<#@ output extension="/" #>
<#@ template language="C#v3.5" hostspecific="True"#>
<#@ include file="Manager.ttinclude"#>
<#@ import namespace="System.Data.SqlClient"#>
<#@ import namespace="System.Data"#>
<#
var manager = new Manager(Host, GenerationEnvironment, true, "T4CustomFileGeneration")
{
OutputPath = Path.GetDirectoryName(Host.TemplateFile),
};
#>
<#
string connectionString = "";
System.Data.SqlClient.SqlConnection conn = new SqlConnection(connectionString);
string selectQueryTables = "select * from [config].[Tables]";
SqlDataAdapter commandTables = new SqlDataAdapter(selectQueryTables,conn);
DataSet TablestoGenerate = new DataSet();
commandTables.Fill(TablestoGenerate, "Tables");
var manager = TemplateFileManager.Create(this);
#>
<# manager.StartBlock("FooStoredProc.sql", "Stored Procedures"); #>
CREATE PROC FOO ...
<# manager.EndBlock(); #>
<# manager.Process(); #>
解决方案
推荐阅读
- python - 训练聊天机器人时出现“NoneType”和“str”错误的实例之间不支持“<”
- c# - 无法访问 Task.Run 中的已处置对象
- excel - 我将如何将电子邮件 URL CTA 链接到 Excel 工作表
- github - 如何在 gitpod 中安装扩展?
- php - how to generate error if date in not in given format php
- flutter - 请解释语法 - 使用继承的小部件的颤振块提供程序
- java - 是否可以使用 Selenium 或任何其他工具自动化 RDP 会话?
- sql-server - 在 SQL 中插入多个值,转换失败
- javascript - Node.js:是否可以为 python 交互式 shell (REPL) 制作适配器?
- azure-resource-manager - 使用导出的 ARM 创建服务总线 - 不允许创建/更新 $Default 规则