Вопрос
У меня есть следующий код, и он содержит информацию, связанную с фигурными скобками и прочим.
<#@ 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)
{
#>
но никогда не прекращайте это.Где-то ниже вам нужно это:
<# } #>
Редактировать - похоже, что это будет закрывающая фигурная скобка чуть ниже определения вложенного класса