.net - T4 模板问题

标签 .net t4

我有以下代码,它与花括号和其他内容相关。

<#@ template language="C#" debug="True" hostspecific="True" #>
<#@ output extension=".cs" #>
<#@ assembly name="System.Data" #>

<#@ assembly name="System.xml" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Data.SqlClient" #>

namespace MyProject.Entities 
{   
    public class     
    {
        <#
        string connectionString = 
            "Server=localhost;Database=GridViewGuy;Trusted_Connection=true"; 
        SqlConnection conn = new SqlConnection(connectionString); 
        conn.Open(); 
        System.Data.DataTable schema = conn.GetSchema("TABLES"); 

        foreach(System.Data.DataRow row in schema.Rows) 
        { 

        #> 

        public class <#= row["TABLE_NAME"].ToString() #>            


        {

        }               

        } 

    }   

}

有人能发现问题吗?

最佳答案

它没有编译的原因是因为 <# #> 内的 foreach block 没有相应的右大括号。标签。您需要进行以下更改:

foreach(System.Data.DataRow row in schema.Rows)                 
{                 
#>                 
  public class <#= row["TABLE_NAME"].ToString()#> 
  {                
  } 
<#
  } //this was missing.
#> 

此外,请记住,您的代码将创建一个没有名称的类,后跟带有表名称的嵌套类列表。像这样:

public class
{
  public class Table1
  {
  }

  public class Table2
  {
  }
  //... and so on..
}

这可能不是您想要实现的目标。

关于.net - T4 模板问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/846305/

相关文章:

.net - Int32^ i = gcnew Int32() 是否分配在托管堆上?

c# - 使用反射和 PropertyInfo 无法识别我的枚举

c# - 在 .NET Core 下的分层架构中自动创建 CRUD

debugging - 无法在 VS2017 中调试 T4 模板

javascript - 无法在 VS 2015 中的 Windows 通用应用程序 (Javascript) 中运行 T4 模板

.net - WCF 消息格式

.Net 停止监听套接字

c# - ConcurrentBag<T> 实现中是否存在内存泄漏?

c# - T4 获取当前解的执行文件名

c# - T4 模板 typeOf(List<>) 导致错误但在 C# 类中有效