<%@ CodeTemplate Language="C#" TargetLanguage="C#" ResponseEncoding="UTF-8" Description="Generates a very simple business object." %>
<%@ Property Name="NameSpace" Type="System.String" Default="" Category="Text" Description="Namespace for this class" %>
<%@ Property Name="Tables" Type="SchemaExplorer.TableSchemaCollection" Category="Source" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="System.Data" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Text" %>
using System;
using System.Collections.Generic;
using System.Text;
namespace CYYFCheckupMgr.Model
{
/// <summary>
/// 所有的关于数据库表的信息
/// </summary>
public class TableFieldBase
{
<%
Tables.Sort(new PropertyComparer("FullName"));
foreach(TableSchema table in Tables)
{
%>
/// <summary>
/// 实体类 <%= table.Name%>
/// 说明 <%=table.Description%>
/// 操作人 yqs
/// <%= DateTime.Now.ToLocalTime() %>
/// </summary>
public class <%= table.Name%>
{
/// <summary>
/// 表名 <%= table.Name%>
/// </summary>
public static string T_NAME="<%= table.Name%>";
<%
foreach(ColumnSchema column in table.Columns)
{
%>
/// <summary>
/// <%=column.Description%>
/// 类型: <%=column.NativeType%>
/// 字长: <%=column.Size%>
/// 默认值: <%=column.ExtendedProperties["CS_Default"].Value%>
/// 允空: <%=column.AllowDBNull%>
/// </summary>
public static string <%=column.Name%>="<%=column.Name%>";
<%
}
%>
}
<%
}
%>
}
}
<script runat="template">
public string GetColumnOracleDataType(ColumnSchema column)
{
string strDataType="";
switch(column.DataType)
{
case System.Data.DbType.String:
strDataType="OracleDbType.Varchar2";
break;
case System.Data.DbType.StringFixedLength:
strDataType="OracleDbType.Char";
break;
case System.Data.DbType.Decimal:
strDataType="OracleDbType.Decimal";
break;
case System.Data.DbType.DateTime:
strDataType="OracleDbType.Date";
break;
case System.Data.DbType.Int16:
strDataType="OracleDbType.Int16";
break;
case System.Data.DbType.Int32:
strDataType="OracleDbType.Int32";
break;
case System.Data.DbType.Int64:
strDataType="OracleDbType.Int64";
break;
case System.Data.DbType.Double:
strDataType="OracleDbType.Double";
break;
default:
strDataType=column.DataType.ToString();
break;
}
return strDataType;
}
public string GetMemberVariableDeclarationStatement(ColumnSchema column)
{
return GetMemberVariableDeclarationStatement("private", column);
}
public string GetMemberVariableDeclarationStatement(string protectionLevel, ColumnSchema column)
{
string statement = protectionLevel + " ";
statement += GetCSharpVariableType(column) + " " + GetMemberVariableName(column);
string defaultValue = GetMemberVariableDefaultValue(column);
if (defaultValue != "")
{
statement += " = " + defaultValue;
}
statement += ";";
return statement;
}
public string GetReaderAssignmentStatement(ColumnSchema column, int index)
{
string statement = "if (!reader.IsDBNull(" + index.ToString() + ")) ";
statement += GetMemberVariableName(column) + " = ";
if (column.Name.EndsWith("TypeCode")) statement += "(" + column.Name + ")";
statement += "reader." + GetReaderMethod(column) + "(" + index.ToString() + ");";
return statement;
}
public string GetCamelCaseName(string value)
{
return value.Substring(0, 1).ToLower() + value.Substring(1);
}
public string ConvertFirstCharToUpper(string value)
{
return value.Substring(0, 1).ToUpper() + value.Substring(1);
}
public string GetMemberVariableName(ColumnSchema column)
{
string propertyName = GetPropertyName(column);
string memberVariableName = GetCamelCaseName(propertyName);
return memberVariableName;
}
public string GetPropertyName(ColumnSchema column)
{
string propertyName = ConvertFirstCharToUpper(column.Name);
if (propertyName == column.Table.Name + "Name") return "Name";
if (propertyName == column.Table.Name + "Description") return "Description";
if (propertyName.EndsWith("TypeCode")) propertyName = propertyName.Substring(0, propertyName.Length - 4);
return propertyName;
}
public string GetMemberVariableDefaultValue(ColumnSchema column)
{
switch (column.DataType)
{
case DbType.Guid:
{
return "Guid.Empty";
}
case DbType.AnsiString:
case DbType.AnsiStringFixedLength:
case DbType.String:
case DbType.StringFixedLength:
{
return "String.Empty";
}
case DbType.Int32:
{
return "0";
}
default:
{
return "";
}
}
}
public string GetCSharpVariableType(ColumnSchema column)
{
if (column.Name.EndsWith("TypeCode")) return column.Name;
switch (column.DataType)
{
case DbType.AnsiString: return "string";
case DbType.AnsiStringFixedLength: return "string";
case DbType.Binary: return "byte[]";
case DbType.Boolean: return "bool";
case DbType.Byte: return "byte";
case DbType.Currency: return "decimal";
case DbType.Date: return "DateTime";
case DbType.DateTime: return "DateTime";
case DbType.Decimal: return "decimal";
case DbType.Double: return "double";
case DbType.Guid: return "Guid";
case DbType.Int16: return "short";
case DbType.Int32: return "int";
case DbType.Int64: return "long";
case DbType.Object: return "object";
case DbType.SByte: return "sbyte";
case DbType.Single: return "float";
case DbType.String: return "string";
case DbType.StringFixedLength: return "string";
case DbType.Time: return "TimeSpan";
case DbType.UInt16: return "ushort";
case DbType.UInt32: return "uint";
case DbType.UInt64: return "ulong";
case DbType.VarNumeric: return "decimal";
default:
{
return "__UNKNOWN__" + column.NativeType;
}
}
}
public string GetReaderMethod(ColumnSchema column)
{
switch (column.DataType)
{
case DbType.Byte:
{
return "GetByte";
}
case DbType.Int16:
{
return "GetInt16";
}
case DbType.Int32:
{
return "GetInt32";
}
case DbType.Int64:
{
return "GetInt64";
}
case DbType.AnsiStringFixedLength:
case DbType.AnsiString:
case DbType.String:
case DbType.StringFixedLength:
{
return "GetString";
}
case DbType.Boolean:
{
return "GetBoolean";
}
case DbType.Guid:
{
return "GetGuid";
}
case DbType.Currency:
case DbType.Decimal:
{
return "GetDecimal";
}
case DbType.DateTime:
case DbType.Date:
{
return "GetDateTime";
}
default:
{
return "__SQL__" + column.DataType;
}
}
}
public string GetClassName(TableSchema table)
{
/*
if (table.Name.EndsWith("s"))
{
return table.Name.Substring(0, table.Name.Length - 1);
}
else
{
return table.Name;
}
*/
if(table==null)
{
return null;
}
return table.Name;
}
public string GetSqlDbType(ColumnSchema column)
{
switch (column.NativeType)
{
case "bigint": return "BigInt";
case "binary": return "Binary";
case "bit": return "Bit";
case "char": return "Char";
case "datetime": return "DateTime";
case "decimal": return "Decimal";
case "float": return "Float";
case "image": return "Image";
case "int": return "Int";
case "money": return "Money";
case "nchar": return "NChar";
case "ntext": return "NText";
case "numeric": return "Decimal";
case "nvarchar": return "NVarChar";
case "real": return "Real";
case "smalldatetime": return "SmallDateTime";
case "smallint": return "SmallInt";
case "smallmoney": return "SmallMoney";
case "sql_variant": return "Variant";
case "sysname": return "NChar";
case "text": return "Text";
case "timestamp": return "Timestamp";
case "tinyint": return "TinyInt";
case "uniqueidentifier": return "UniqueIdentifier";
case "varbinary": return "VarBinary";
case "varchar": return "VarChar";
default: return "__UNKNOWN__" + column.NativeType;
}
}
public string GetPrimaryKeyVariableExpression(TableSchema table)
{
return GetCSharpVariableType(table.PrimaryKey.MemberColumns[0]) + " " + GetCamelCaseName(table.PrimaryKey.MemberColumns[0].Name);
}
public string GetPrimaryKeyType(TableSchema table)
{
if (table.PrimaryKey.MemberColumns.Count == 1)
{
return GetCSharpVariableType(table.PrimaryKey.MemberColumns[0]);
}
else
{
throw new ApplicationException("This template will not work on primary keys with more than one member column.");
}
}
public string GetPopulationConstructorParams(SchemaExplorer.TableSchema table)
{
System.Text.StringBuilder sb = new StringBuilder();
foreach(ColumnSchema column in table.Columns)
{
if (sb.Length != 0)
sb.Append(", ");
sb.Append(GetCSharpVariableType(column));
sb.Append(" ");
sb.Append(GetCamelCaseName(column.Name));
}
return sb.ToString();
}
public string GetLowerCaseName(string value)
{
return value.ToLower();
}
public string GetModuleInstanceName(TableSchema table)
{
return "o"+table.Name+"Entity";
}
public string GetAddParametersString(ColumnSchema column)
{
DbType dbtype = column.DataType;
string result = String.Empty;
switch (dbtype)
{
case DbType.Byte:
case DbType.Currency:
case DbType.Decimal:
case DbType.Int16:
case DbType.Int32:
case DbType.Int64:
if(column.AllowDBNull)
{
result = "if(" + GetModuleInstanceName(column.Table) + "." + column.Name + ".ToString()!=null&&" + GetModuleInstanceName(column.Table) + "." + column.Name + ">0){db.AddParameter(\"@" + column.Name + "\"," + GetModuleInstanceName(column.Table) + "." + column.Name + ");}";
}
else
{
result = "db.AddParameter(\"@" + column.Name + "\"," + GetModuleInstanceName(column.Table) + "." + column.Name + ");";
}
break;
case DbType.AnsiStringFixedLength:
case DbType.AnsiString:
case DbType.String:
case DbType.StringFixedLength:
case DbType.Binary:
if(column.AllowDBNull)
{
result = "if(" + GetModuleInstanceName(column.Table) + "." + column.Name + "!=null&&" + GetModuleInstanceName(column.Table) + "." + column.Name + ".Length>0){db.AddParameter(\"@" + column.Name + "\"," + GetModuleInstanceName(column.Table) + "." + column.Name + "," + column.Size + ");}";
}
else
{
result = "db.AddParameter(\"@" + column.Name + "\"," + GetModuleInstanceName(column.Table) + "." + column.Name + "," + column.Size + ");";
}
break;
case DbType.Guid:
if(column.AllowDBNull)
{
result = "if(" + GetModuleInstanceName(column.Table) + "." + column.Name + ".ToString()!=null){db.AddParameter(\"@" + column.Name + "\"," + GetModuleInstanceName(column.Table) + "." + column.Name + ");}";
}
else
{
result = "db.AddParameter(\"@" + column.Name + "\"," + GetModuleInstanceName(column.Table) + "." + column.Name + ");";
}
break;
case DbType.DateTime:
case DbType.Date:
if(column.AllowDBNull)
{
result = "if(" + GetModuleInstanceName(column.Table) + "." + column.Name + "!=deadDate){db.AddParameter(\"@" + column.Name + "\"," + GetModuleInstanceName(column.Table) + "." + column.Name + ");}";
}
else
{
result = "db.AddParameter(\"@" + column.Name + "\"," + GetModuleInstanceName(column.Table) + "." + column.Name + ");";
}
break;
default:
result = "db.AddParameter(\"@" + column.Name + "\"," + GetModuleInstanceName(column.Table) + "." + column.Name + ");";
break;
}
return result;
}
</script>