質問
私は、次のコードを持っており、それは、中括弧とスタッフに関連する与えています。
<#@ 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ブロックに対応する閉じ括弧を持っていないので、それがコンパイルされていない理由はあります。あなたは次のように変更を加える必要があります:
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..
}
これはあなたが達成しようとしているものではないかもしれない。
他のヒント
あなたの最初のブロックでは、あなたはコードブロックを開始
foreach(System.Data.DataRow row in schema.Rows)
{
#>
が、それを終了することはありません。あなたがこれを必要とするどこかに下回るます:
<# } #>
の編集の - それだけで、ネストされたクラス定義
の下に右中括弧だろうように見えます所属していません StackOverflow