<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Data" #>
<#@ assembly name="System.Xml" #>
<#@ assembly name="System.Configuration" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ import namespace="System.Data" #>
<#@ output extension=".cs" #>
using System;
namespace EIR.Module {
<# //System.Diagnostics.Debugger.Launch();//---进入调试
string nameClass= System.IO.Path.GetFileNameWithoutExtension(this.Host.TemplateFile);
string configPath=Host.ResolveAssemblyReference("$(ProjectDir)")+"app.config";
var configPathMap=new System.Configuration.ExeConfigurationFileMap(){ExeConfigFilename=configPath};
var appConfig=System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(configPathMap, System.Configuration.ConfigurationUserLevel.None);
var connSection= appConfig.GetSection("connectionStrings") as System.Configuration.ConnectionStringsSection;
string cnnstr= connSection.ConnectionStrings["cnnstrMasterMssql"].ConnectionString;
string cmdstrForColDescription=string.Format("with htt as({0}),gmm as ({1}) select htt.name,gmm.value from htt left join gmm on htt.column_id=gmm.minor_id",
"select * from sys.columns where object_id=OBJECT_ID('"+nameClass+"')",
"select * from sys.extended_properties where sys.extended_properties.major_id=OBJECT_ID('"+nameClass+"')");
this.WriteLine(string.Format("{1}public class {0}",nameClass,new String(' ',4)));
this.WriteLine(new String(' ',4)+"{");
using (SqlConnection cnn = new SqlConnection(cnnstr)){
using (SqlCommand cmd = cnn.CreateCommand()){
cnn.Open();
cmd.CommandText = "select * from "+nameClass;
SqlDataReader rr=cmd.ExecuteReader();
DataTable table = rr.GetSchemaTable();
rr.Close();
cmd.CommandText=cmdstrForColDescription;
using(SqlDataAdapter adapater=new SqlDataAdapter(cmd)){
DataTable tableDesp=new DataTable();
adapater.Fill(tableDesp);
foreach (DataRow row in table.Rows){
string colName = row["ColumnName"].ToString();
string colType = row["DataType"].ToString().Substring(7);
bool allowDBNull=Convert.ToBoolean(row["AllowDBNull"]);
if(allowDBNull && !colType.Equals("String"))
colType="Nullable<"+colType+">";
this.WriteLine(string.Format("{3}/// <summary>",colType,colName,"{set;get;}",new String(' ',8)));
this.WriteLine(string.Format("{3}///{4}",colType,colName,"{set;get;}",new String(' ',8),tableDesp.Select("name='"+colName+"'")[0]["value"].ToString().Replace("\r\n"," ").Replace("\n"," ").Replace("\n"," ")));
this.WriteLine(string.Format("{3}/// </summary>",colType,colName,"{set;get;}",new String(' ',8)));
this.WriteLine(string.Format("{3}public {0} {1} {2}",colType,colName,"{set;get;}",new String(' ',8)));
}
}
}
}
#>
}
}