초용 T4
3907 단어 TextTemplateT4.Net 기본 사항
간단하게 보면 데이터의 표를 대응하는 실체 클래스로 만들고 프로젝트에 '실행할 때 텍스트 템플릿' 을 만듭니다. 확장자는 다음과 같습니다.tt,사실.tt의 코드가 표준 C# 코드인 경우tt는 디자인할 때 생성할 수 있습니다.cs 파일은 런타임에 생성할 수도 있습니다. 이 예는 디자인 타임에 생성되며 코드는 다음과 같습니다.
!
";
xmlDoc.Save(Host.ResolveAssemblyReference("$(ProjectDir)")+@"\"+proName);
}
}
//
public void WriteFile(string className,string content)
{
var writer = new System.IO.StreamWriter(Host.ResolveAssemblyReference("$(ProjectDir)")+@"\"+className + ".cs", false, Encoding.Default);
writer.Write(content);
writer.Flush();
writer.Close();
}
//
public Dictionary BuildClass(string constr)
{
using (var con = new System.Data.SqlClient.SqlConnection(constr))
{
var cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandText = "select name from sys.tables WHERE name!='sysdiagrams' AND name!='__MigrationHistory'";
cmd.Connection = con;
con.Open();
var dr = cmd.ExecuteReader();
var dt = new DataTable();
dt.Load(dr);
dr.Close();
var dic =new Dictionary();
foreach (DataRow row in dt.Rows)
{
cmd.CommandText = string.Format(@"select COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NULLABLE
from information_schema.columns WHERE TABLE_NAME = '{0}'", row["name"].ToString());
var fielddr = cmd.ExecuteReader();
var fieldTable = new DataTable();
fieldTable.Load(fielddr);
fielddr.Close();
dic.Add(row["name"].ToString(), CreateClass(row["name"].ToString(), fieldTable));
}
return dic;
}
}
public string CreateClass(string className, DataTable fields)
{
var csBuilder = new StringBuilder("\r
");
csBuilder.AppendLine(string.Format(@" public class {0}", className));
csBuilder.AppendLine(@" {");
foreach (DataRow row in fields.Rows)
{
csBuilder.AppendLine(CreateProperty(row));
}
csBuilder.AppendLine(@" }");
return csBuilder.ToString();
}
//
public string CreateProperty(DataRow row)
{
var dic = new Dictionary();
dic.Add("nvarchar", "string");
dic.Add("varchar", "string");
dic.Add("char", "string");
dic.Add("text", "string");
dic.Add("int", "string");
dic.Add("money", "decimal");
dic.Add("float", "float");
dic.Add("bit", "bool");
var csBuilder = new StringBuilder();
csBuilder.AppendLine(string.Format(@" public {0} {1}", dic[row["DATA_TYPE"].ToString().ToLower()], row["COLUMN_NAME"].ToString()));
csBuilder.AppendLine(@" {");
csBuilder.AppendLine(string.Format(@" get;"));
csBuilder.AppendLine(string.Format(@" set;"));
csBuilder.AppendLine(@" }");
return csBuilder.ToString();
}
#>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Sublime Text에서 markdown을 쓸 때 그림을 직접 붙일 수 없는 문제 해결작업이 필요하기 때문에 각종 보고서를 자주 써야 하기 때문에 Markdown을 사용하면 매우 편리하고 텍스트 편집기를 사용하면 쓰기 시작할 수 있으며 PDF 파일을 자동으로 생성하여 조판 효과가 통일된다. 예전에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.