CodeSmith生成表和视图的C#实体代码 多个表 带注释

<%@ 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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值