2009-05-10 13 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) 
      { 

      #> 

を開始するが、それを終了することはありません。どこかあなたはこの必要を下回る:

  <# } #> 

が編集 - それはあなたがいないので、それがコンパイルされていない理由があるだけで、ネストされたクラス定義

関連する問題