2

私は次のコードを持っています、そしてそれは中かっことものに関連して与えています。

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

2 に答える 2

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

これはあなたが達成しようとしていることではないかもしれません。

于 2009-05-10T23:51:08.733 に答える
2

最初のブロックで、コードブロックを開始します

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

            #> 

しかし、決してそれを終了しないでください。以下のどこかにこれが必要です:

            <# } #>

編集-ネストされたクラス定義のすぐ下にある中括弧のように見えます

于 2009-05-10T23:47:00.830 に答える