2009-05-10 3 views
2

다음 코드가 있으며 중괄호와 관련이 있습니다.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() #>    


     { 

     }    

     } 

    } 

} 

누구든지 문제를 발견 할 수 있습니까? 첫 번째 블록에서

답변

4

이유가 될 것이다 것 같습니다 당신이하지 않기 때문에 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.. 
} 

이것은 성취하려는 것이 아닐 수 있습니다.

+0

정말로 도움이 된 고마워요! – azamsharp

+0

Visual Studio 용 Tangible T4 편집기 플러그인을 설치해야합니다. 이런 종류의 것을 쉽게 알아낼 수있는 중괄호 강조 표시를 제공합니다. http://visualstudiogallery.msdn.microsoft.com/en-us/1a6c4fb2-7908-4721-92b3-61f2cee92294 – Mel

+2

인텔리 센스가 천천히 그리고 반점이 있음을 실감 할 때까지 유형이 시원합니다. 템플릿에 중단 점. –

2

, 당신은 코드 블록을

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

      #> 

을 시작하지만 종료하지 않습니다. 당신이 필요 어딘가에 아래 :

  <# } #> 

편집 - 그것은 컴파일되지 않는 이유는 단지 중첩 된 클래스 정의 아래에 중괄호를 닫는