Domanda
Ho il seguente codice e fornisce informazioni relative a parentesi graffe e cose del genere.
<#@ 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() #>
{
}
}
}
}
Qualcuno riesce a individuare il problema?
Soluzione
Il motivo per cui non è la compilazione è perché non si dispone di una parentesi graffa di chiusura corrispondente per il blocco foreach all'interno <# #>
tag. Hai bisogno di fare la seguente modifica:
foreach(System.Data.DataRow row in schema.Rows)
{
#>
public class <#= row["TABLE_NAME"].ToString()#>
{
}
<#
} //this was missing.
#>
Inoltre, tenere a mente che il codice sarà creare una classe senza nome seguito da un elenco delle classi nidificate con i nomi delle tabelle. In questo modo:
public class
{
public class Table1
{
}
public class Table2
{
}
//... and so on..
}
Questo non può essere quello che sta cercando di realizzare.
Altri suggerimenti
Nel tuo primo blocco, inizi un blocco di codice
foreach(System.Data.DataRow row in schema.Rows)
{
#>
ma non interromperlo mai.Da qualche parte qui sotto ti serve questo:
<# } #>
modificare - sembra che sia la parentesi graffa di chiusura appena sotto la definizione della classe nidificata