Проблема с шаблонами T4 - PullRequest
2 голосов
/ 11 мая 2009

У меня есть следующий код, и он дает, связанные с фигурными скобками и прочее.

<#@ 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() #>            


        {

        }               

        } 

    }   

}

Может кто-нибудь определить проблему?

Ответы [ 2 ]

4 голосов
/ 11 мая 2009

Причина, по которой он не компилируется, заключается в том, что у вас нет соответствующей закрывающей скобки для блока foreach внутри тегов <# #>. Вам необходимо внести следующее изменение:

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..
}

Возможно, это не то, чего вы пытаетесь достичь.

2 голосов
/ 11 мая 2009

В вашем первом блоке вы начинаете кодовый блок

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

            #> 

но никогда не прекращайте это. Где-то ниже вам нужно это:

            <# } #>

edit - похоже, это будет закрывающая фигурная скобка чуть ниже вложенного определения класса

...