Pergunta
Eu tenho o seguinte código e ele está dando relacionadas com chaves e outras coisas.
<#@ 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() #>
{
}
}
}
}
Alguém pode detectar o problema?
Solução
A razão pela qual não está compilando é porque você não tem uma chave de fechamento correspondente para o bloco foreach marcas dentro <# #>
. Você precisa fazer a seguinte alteração:
foreach(System.Data.DataRow row in schema.Rows)
{
#>
public class <#= row["TABLE_NAME"].ToString()#>
{
}
<#
} //this was missing.
#>
Além disso, tenha em mente que o seu código irá criar uma classe sem nome seguido por uma lista de classes aninhadas com os nomes de suas tabelas. Como esta:
public class
{
public class Table1
{
}
public class Table2
{
}
//... and so on..
}
Este não pode ser o que você está tentando realizar.
Outras dicas
Em seu primeiro bloco, você começa um bloco de código
foreach(System.Data.DataRow row in schema.Rows)
{
#>
mas nunca terminá-lo. Em algum lugar abaixo você precisa isto:
<# } #>
editar - parece que ele seria o fechamento chaveta logo abaixo da definição de classe aninhada