387 lines
12 KiB
Plaintext
387 lines
12 KiB
Plaintext
<#@ template language="C#" debug="True" hostspecific="True" #>
|
||
<#@ output extension=".cs" #>
|
||
<#@ assembly name="System.Data" #>
|
||
<#@ assembly name="System.Data.DataSetExtensions" #>
|
||
<#@ assembly name="$(SolutionDir)lib\EntityFramework.dll" #>
|
||
<#@ assembly name="System.xml" #>
|
||
<#@ import namespace="System.Collections.Generic" #>
|
||
<#@ import namespace="System.Data" #>
|
||
<#@ import namespace="System.Linq" #>
|
||
<#@ import namespace="System.Data.SqlClient" #>
|
||
<#@ include file="ModelAuto.ttinclude"#>
|
||
|
||
|
||
<# var manager = new Manager(Host, GenerationEnvironment, true) { OutputPath = Path.GetDirectoryName(Host.TemplateFile)+"/DataBase/"}; #>
|
||
<#
|
||
string tableClass="";
|
||
//所有表名称
|
||
//string sqlGetTable = "SELECT Name FROM SysObjects Where XType='U' ORDER BY Name";
|
||
DataTable dt = GetDataTable(new List<string> { "Projects","InvestigateTable","NonResidentialInvestigateTable","InvestigateTable_Assessment","NonInvestigateTable_Assessment","NonResidentialAgreement","ResidentialAgreement","PoliciesRegulations" });
|
||
//DataTable dtRelationTable = GetRelationTable();
|
||
//所有表信息
|
||
string selectQuery ="select syscolumns.name,systypes.name,syscolumns.length from syscolumns,systypes where syscolumns.xusertype=systypes.xusertype and syscolumns.id=object_id('@tableName')";
|
||
DataTable datacloumn = new DataTable();
|
||
string primaryKey ="";
|
||
#>
|
||
|
||
<#
|
||
foreach(System.Data.DataRow row in dt.Rows)
|
||
{
|
||
string objType=row["XType"].ToString().Trim();
|
||
tableClass = GetClassName(row["name"].ToString());
|
||
manager.StartBlock(tableClass+".cs");
|
||
//获取表格
|
||
datacloumn.Clear();
|
||
datacloumn = GetDataTableCloumn(row["name"].ToString());
|
||
primaryKey = GetKey(row["name"].ToString());
|
||
#>
|
||
//----------<#=row["name"].ToString()#>开始----------
|
||
|
||
using System;
|
||
using System.ComponentModel.DataAnnotations;
|
||
using System.ComponentModel.DataAnnotations.Schema;
|
||
//using System.Data.Entity.ModelConfiguration;
|
||
using Ewide.NbzsZheliban.Entity;
|
||
using System.Runtime.Serialization;
|
||
namespace Ewide.NbzsZheliban.Entity
|
||
{
|
||
/// <summary>
|
||
/// 数据表实体类:<#= tableClass #>
|
||
/// </summary>
|
||
[Table("<#=tableClass #>")]
|
||
public partial class <#= tableClass #><# if(objType=="U"){#>: BaseEntity<#}else{#>: BaseEntity<#}#>
|
||
{
|
||
<#
|
||
List<string> listBaseColumn = new List<string>{"Id","UNID","CreateTime","CreateUserId","LastUpdateTime","IsDeleted","Sort"};
|
||
foreach (DataRow dr in datacloumn.Rows)
|
||
{
|
||
string columnName=GetFormColumnName(dr["columnname"].ToString(),tableClass);
|
||
//if(objType=="U"&&listBaseColumn.Contains(columnName))
|
||
if(listBaseColumn.Contains(columnName))
|
||
continue;
|
||
#>
|
||
/// <summary>
|
||
/// <#=dr["comments"].ToString()==""?"无描述": dr["comments"].ToString().Replace("\r","").Replace("\n","").Replace("\"","") #>
|
||
/// </summary>
|
||
|
||
[Display(Name="<#=dr["comments"].ToString()==""?"无描述": dr["comments"].ToString().Replace("\r","").Replace("\n","").Replace("\"","") #>")]
|
||
<#
|
||
if(dr["columnname"].ToString().ToLower()==primaryKey.ToLower())
|
||
{#>[Key]
|
||
<#}
|
||
#>
|
||
[Column("<#=columnName #>")]
|
||
[DataMember]
|
||
public <#= objType=="V"?ViewTransFromSqlType(dr["datatype"].ToString(),dr["data_length"].ToString(),dr["nullable"].ToString()):TransFromSqlType(dr["datatype"].ToString(),dr["data_length"].ToString(),dr["nullable"].ToString()) #> <#=columnName#> {get;set;}
|
||
<#
|
||
}
|
||
#>
|
||
}
|
||
|
||
/**
|
||
/// <summary>
|
||
/// 数据表实体类Map:<#= tableClass #>
|
||
/// </summary>
|
||
public class <#= tableClass #>Map : EntityTypeConfiguration<<#= tableClass #>>
|
||
{
|
||
public <#= tableClass #>Map()
|
||
{
|
||
this.ToTable("<#= tableClass #>");
|
||
<#
|
||
foreach (DataRow dr in datacloumn.Rows)
|
||
{
|
||
string columnName=GetFormColumnName(dr["columnname"].ToString(),tableClass);
|
||
if(dr["columnname"].ToString()==primaryKey)
|
||
{#>
|
||
this.HasKey(t => t.<#= columnName #>);
|
||
<#}
|
||
else
|
||
{#>
|
||
this.Property(t => t.<#=columnName #>).HasColumnName("<#=columnName #>")<#if(dr["nullable"].ToString()=="0"){#>.IsRequired()<#}#>;
|
||
<#}
|
||
}
|
||
#>
|
||
}
|
||
}**/
|
||
|
||
}
|
||
|
||
//----------<#=tableClass#>结束----------
|
||
|
||
<# manager.EndBlock(); #>
|
||
|
||
<#
|
||
} #>
|
||
|
||
<#
|
||
manager.Process(true);
|
||
#>
|
||
|
||
|
||
<#+
|
||
/// <summary>
|
||
/// SQL[不完善,需要的自己改造]
|
||
/// </summary>
|
||
/// <param name="type"></param>
|
||
/// <returns></returns>
|
||
public string TransFromSqlType(string type,string data_length,string nullable)
|
||
{
|
||
if(type.ToLower()=="nvarchar2")
|
||
{
|
||
return "varchar2";
|
||
}
|
||
if(type.ToLower()=="uniqueidentifier")
|
||
{
|
||
return "Guid"+(nullable=="1"?"?":"");
|
||
}
|
||
//是主键 且 type是字符串的 改成guid
|
||
if((type.ToLower()=="raw"&&data_length=="16"))
|
||
{
|
||
return "Guid"+(nullable=="1"?"?":"");
|
||
}
|
||
switch(type.ToLower())
|
||
{
|
||
case "int":
|
||
case "int32":
|
||
case "number":
|
||
type="int"+(nullable=="1"?"?":"");
|
||
break;
|
||
case "varchar":
|
||
case "varchar2":
|
||
case "text":
|
||
case "ntext":
|
||
case "nvarchar":
|
||
case "longtext":
|
||
case "string":
|
||
case "raw":
|
||
case "nclog":
|
||
case "nclob":
|
||
case "clob":
|
||
type="string";
|
||
break;
|
||
case "blob":
|
||
type="byte[]";
|
||
break;
|
||
case "bit":
|
||
case "boolean":
|
||
type="bool";
|
||
break;
|
||
case "datetime":
|
||
case "date":
|
||
type="DateTime"+(nullable=="1"?"?":"");
|
||
break;
|
||
case "bigint":
|
||
type="long";
|
||
break;
|
||
case "numeric":
|
||
case "real":
|
||
case "decimal":
|
||
type="decimal"+(nullable=="1"?"?":"");
|
||
break;
|
||
|
||
|
||
|
||
}
|
||
return type;
|
||
}
|
||
public string ViewTransFromSqlType(string type,string data_length,string nullable)
|
||
{
|
||
if(type.ToLower()=="nvarchar2")
|
||
{
|
||
return "varchar2";
|
||
}
|
||
if(type.ToLower()=="uniqueidentifier")
|
||
{
|
||
return "Guid?";
|
||
}
|
||
//是主键 且 type是字符串的 改成guid
|
||
if((type.ToLower()=="raw"&&data_length=="16"))
|
||
{
|
||
return "Guid?";
|
||
}
|
||
switch(type.ToLower())
|
||
{
|
||
case "int":
|
||
case "int32":
|
||
case "number":
|
||
type="int?";
|
||
break;
|
||
case "varchar":
|
||
case "varchar2":
|
||
case "text":
|
||
case "ntext":
|
||
case "nvarchar":
|
||
case "longtext":
|
||
case "string":
|
||
case "raw":
|
||
case "nclog":
|
||
case "nclob":
|
||
case "clob":
|
||
type="string";
|
||
break;
|
||
case "blob":
|
||
type="byte[]";
|
||
break;
|
||
case "bit":
|
||
case "boolean":
|
||
type="bool";
|
||
break;
|
||
case "datetime":
|
||
case "date":
|
||
type="DateTime?";
|
||
break;
|
||
case "bigint":
|
||
type="long?";
|
||
break;
|
||
|
||
|
||
|
||
}
|
||
return type;
|
||
}
|
||
|
||
public string GetFormColumnName(string fieldname,string tablename)
|
||
{
|
||
if(tablename.StartsWith("PRJ_STAGE_FORM_")){
|
||
return fieldname;
|
||
}
|
||
return GetClassName(fieldname);
|
||
}
|
||
public string GetClassName(string tablename)
|
||
{
|
||
/**
|
||
string[] tablestr = tablename.Split('_');
|
||
string rslt = "";
|
||
foreach (var str in tablestr)
|
||
{
|
||
rslt = rslt + TitleToUpper(str.ToLower());
|
||
}
|
||
return rslt;
|
||
**/
|
||
return tablename;
|
||
}
|
||
|
||
|
||
|
||
public string TitleToUpper(string str)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(str))
|
||
return string.Empty;
|
||
|
||
char[] s = str.ToCharArray();
|
||
char c = s[0];
|
||
|
||
if ('a' <= c && c <= 'z')
|
||
c = (char)(c & ~0x20);
|
||
|
||
s[0] = c;
|
||
|
||
return new string(s);
|
||
}
|
||
|
||
|
||
string connectionstr ="data source=118.178.224.202;initial catalog=Nbcqb2;persist security info=True;user id=KYSQLSERVERADMIN;password=KYDBLogin20161103...;";
|
||
|
||
public DataTable GetDataTable(List<string> listTableName)
|
||
{
|
||
DataTable dtrslt = QueryTable("SELECT Name,XType FROM SysObjects Where XType='U' and Name in "+ "('" + string.Join("','", listTableName) + "')" + " ORDER BY Name");
|
||
DataTable viewrslt = QueryTable("SELECT Name,XType FROM SysObjects Where XType='V' and Name in " + "('" + string.Join("','", listTableName) + "')" + " ORDER BY Name");
|
||
|
||
DataTable rslt = dtrslt.Copy();
|
||
//添加DataTable2的数据
|
||
foreach (DataRow dr in viewrslt.Rows)
|
||
{
|
||
rslt.ImportRow(dr);
|
||
}
|
||
|
||
return rslt;
|
||
}
|
||
public DataTable GetDataTable()
|
||
{
|
||
DataTable dtrslt = QueryTable("SELECT Name,XType FROM SysObjects Where XType='U' ORDER BY Name");
|
||
DataTable viewrslt = QueryTable("SELECT Name,XType FROM SysObjects Where XType='V' ORDER BY Name");
|
||
|
||
DataTable rslt = dtrslt.Copy();
|
||
//添加DataTable2的数据
|
||
foreach (DataRow dr in viewrslt.Rows)
|
||
{
|
||
rslt.ImportRow(dr);
|
||
}
|
||
|
||
return rslt;
|
||
}
|
||
|
||
public DataTable QueryTable(string sql)
|
||
{
|
||
DataSet ds = new DataSet();
|
||
try
|
||
{
|
||
SqlConnection con = new SqlConnection(connectionstr);
|
||
con.Open();
|
||
SqlCommand cmd = new SqlCommand(sql, con);
|
||
SqlDataAdapter oda = new SqlDataAdapter();
|
||
oda.SelectCommand = cmd;
|
||
oda.Fill(ds);
|
||
con.Close();
|
||
}
|
||
catch (Exception ee)
|
||
{
|
||
throw;
|
||
}
|
||
return ds.Tables[0];
|
||
}
|
||
|
||
public DataTable GetDataTableCloumn(string datatable)
|
||
{
|
||
DataSet ds = new DataSet();
|
||
try
|
||
{
|
||
SqlConnection con = new SqlConnection(connectionstr);
|
||
con.Open();
|
||
SqlCommand cmd = new SqlCommand("select sc.id,sc.name columnname,st.name datatype,sc.length data_length,sc.isnullable nullable,isnull(ep.value,'') comments from syscolumns sc inner join systypes st on sc.xusertype=st.xusertype left join sys.columns c on sc.id=c.object_id and sc.name=c.name left join sys.extended_properties ep on sc.id=ep.major_id and c.column_id=ep.minor_id and ep.class =1 where sc.id=object_id('"+datatable+"')", con);
|
||
SqlDataAdapter oda = new SqlDataAdapter();
|
||
oda.SelectCommand = cmd;
|
||
oda.Fill(ds);
|
||
con.Close();
|
||
}
|
||
catch (Exception ee)
|
||
{
|
||
throw;
|
||
}
|
||
return ds.Tables[0];
|
||
}
|
||
|
||
|
||
public string GetKey(string table)
|
||
{
|
||
string rslt = "";
|
||
string sql = @"select * from ( select a.name as FieldName,a.isnullable,c.name as FieldType,COLUMNPROPERTY(a.id,a.name,'IsIdentity') as isidentity,PK=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and parent_obj=a.id and name in (SELECT name FROM sysindexes WHERE indid in(SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
|
||
))) then 'true' else 'false' end from SysColumns a left JOIN systypes c on a.xusertype=c.xusertype where a.id=Object_Id('"+table+"') ) m where PK='true'";
|
||
DataSet ds = new DataSet();
|
||
try
|
||
{
|
||
using (SqlConnection connection = new SqlConnection(connectionstr))
|
||
{
|
||
SqlCommand command = new SqlCommand(sql, connection);
|
||
connection.Open();
|
||
SqlDataReader reader;
|
||
reader = command.ExecuteReader();
|
||
while (reader.Read())
|
||
{
|
||
rslt = reader.GetString(0);
|
||
}
|
||
reader.Close();
|
||
}
|
||
}
|
||
catch (Exception ee)
|
||
{
|
||
|
||
throw;
|
||
}
|
||
return rslt;
|
||
}
|
||
|
||
|
||
#>
|
||
|