سؤال
ولدي البرمجية التالية ويعطي ذات الصلة إلى الأقواس المعقوفة والاشياء.
<#@ 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