Frage
Ich habe den folgenden Code, und es wird geben im Zusammenhang mit geschweiften Klammern und so.
<#@ 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() #>
{
}
}
}
}
Kann jemand das Problem erkennen?
Lösung
Der Grund, warum es Kompilieren nicht ist, weil Sie nicht über eine entsprechende schließende Klammer für den foreach-Block innerhalb <# #>
Tags haben. Sie benötigen die folgende Änderung vornehmen:
foreach(System.Data.DataRow row in schema.Rows)
{
#>
public class <#= row["TABLE_NAME"].ToString()#>
{
}
<#
} //this was missing.
#>
Darüber hinaus beachten Sie, dass der Code eine Klasse ohne Namen von einer Liste von verschachtelten Klassen mit den Namen Ihrer Tabellen gefolgt schaffen. Wie folgt aus:
public class
{
public class Table1
{
}
public class Table2
{
}
//... and so on..
}
Das kann nicht sein, was Sie versuchen zu erreichen.
Andere Tipps
Im ersten Block, Sie starten einen Codeblock
foreach(System.Data.DataRow row in schema.Rows)
{
#>
aber nie beenden. Irgendwo unten Sie diese brauchen:
<# } #>
Bearbeiten - es sieht aus wie es die schließende geschweifte Klammer sei knapp unterhalb der verschachtelten Klassendefinition