美文网首页
CodeSmith oracle表模型与视图模型模板

CodeSmith oracle表模型与视图模型模板

作者: Rinaloving | 来源:发表于2019-07-18 09:58 被阅读0次

    表模型模板

    <%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="Generates a very simple business object." %>
    <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="从数据库中选择表" %>
    <%@ Property Name="SingleFileMode" Type="System.Boolean" Category="Options" Default="True" Description="Generate content for a complete cs file instead of just a class." %>
    <%@ Property Name="ClassNamespace" Type="System.String" Category="Options" Default="BusinessObjects" Description="表空间名称" %>
    <%@ Assembly Name="SchemaExplorer" %>
    <%@ Assembly Name="System.Data" %>
    <%@ Import Namespace="SchemaExplorer" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Map Name="SqlCSharp" Src="Sql-CSharp" Description="System to C# Type Map" %>
    <%@ Map Name="DbDataReader" Src="DbType-DataReaderMethod" Description="DbType to DataReader Method Map" %>
    <%@ Map Name="SqlNativeSqlDb" Src="SqlNativeType-SqlDbType" Description="SqlNativeType to SqlDbType Map" %>
    <%@ Map Name="DbTypeCSharp" Src="DbType-CSharp" Description="DbType to CSharp Map" %>
    <% if(this.SingleFileMode) { %>
    using DapperEx;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    
    namespace SmartMap.FCExchange.Host.Models.estate_gb
    {
    <% } %>
    
       
        /// <summary>
        ///  <%=SourceTable.Description%>(<%= GetClassName(SourceTable) %>)
        /// </summary>
         [Serializable]
        public partial class <%= GetClassName(SourceTable)%>{
    
        
            <% for (int i = 0; i < SourceTable.Columns.Count; i++) { %>
            /// <summary>
            /// <%=SourceTable.Columns[i].Description%>
            /// </summary>
            public virtual <%= GetCSharpVariableType3(SourceTable.Columns[i]) %> <%= GetPropertyName(SourceTable.Columns[i]) %>{get; set; }
                
            <% } %>
    
        
        }
    
    
    
    
    
    <% if(this.SingleFileMode) { %>
    }
    <% } %>
    
    <script runat="template">
    
    public string GetMemberVariableDeclarationStatement(ColumnSchema column)
    {
        return GetMemberVariableDeclarationStatement("private", column);
    }
    
    public string GetMemberVariableDeclarationStatement(string protectionLevel, ColumnSchema column)
    {
        string statement = protectionLevel + " ";
        statement += GetCSharpVariableType3(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 GetMemberVariableName(ColumnSchema column)
    {
        string propertyName = GetPropertyName(column);
        string memberVariableName = "_" + GetCamelCaseName(propertyName);
        
        return memberVariableName;
    }
    
    public string GetPropertyName(ColumnSchema column)
    {
        string propertyName = 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";
            }
            default:
            {
                return "";
            }
        }
    }
    
    public string GetCSharpVariableType(ColumnSchema column)
    {
        if (column.Name.EndsWith("TypeCode")) return column.Name;
    
        return DbTypeCSharp[column.DataType.ToString()];    
    }
    
    public string GetCSharpVariableType2(ColumnSchema column)
    {
        string str=column.Name;
        string s=DbTypeCSharp[column.DataType.ToString()];
        switch(s)
        {
            case "string":
                str="nvarchar2";
                break;
            case "DateTime":
                str="date";
                break;
            case "int":
            case "double":
            case "decimal":
            case "short":
                str="number";
                break;
            case "byte":
            case "object":
                str="blob";
                break;
            default:break;
        }
        return str;
    }
    public string GetCSharpVariableType3(ColumnSchema column)
    {
        
        string s=DbTypeCSharp[column.DataType.ToString()];
        switch(s)
        {
    
            case "decimal":
            case "double":
            case "float":
            case "short":
                s="decimal";
                break;   
            case "int":
            case "integer":
                s="int";
                break;
            case "object":
                s="byte[]";
                break;
            default:break;
        }
        return s;
    }
    public string GettureOrfalse(ColumnSchema column)
    {
        string str=column.Name;
        string s=column.AllowDBNull.ToString();
        switch(s)
        {
            case "False":
                str="false";
                break;
            case "True":
                str="true";
                break;
            default:break;
        }
        return str;
    }
    public string GetReaderMethod(ColumnSchema column)
    {
        return DbDataReader[column.DataType.ToString()];
    }
    
    public string GetClassName(TableSchema table)
    {
        if (table.Name.EndsWith("s"))
        {
            return table.Name.Substring(0, table.Name.Length - 1);
        }
        else
        {
            return table.Name;
        }
    }
    
    public string GetSqlDbType(ColumnSchema column)
    {
        return SqlNativeSqlDb[column.NativeType.ToString()];
    }
    
    public string GetPrimaryKeyType(TableSchema table)
    {
        if (table.PrimaryKey != null)
        {
            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.");
            }
        }
        else
        {
            throw new ApplicationException("This template will only work on tables with a primary key.");
        }
    }
    
    public override string GetFileName()
    {
        return this.GetClassName(this.SourceTable) + ".cs";
    }
    </script>
    

    视图模型模板

    <%@ CodeTemplate Language="C#" TargetLanguage="C#" ResponseEncoding="UTF-8"   Description="Generates a very simple business object." %>
    
    <%@ Property Name="View" Type="SchemaExplorer.ViewSchema" Default="" Optional="False" Category="para" Description="" OnChanged="" Editor="" EditorBase="" Serializer="" %>
    <%@ Assembly Name="System.Data" %>
    <%@ Assembly Name="SchemaExplorer" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="SchemaExplorer" %>
    <%@ Map Name="DbTypeCSharp" Src="DbType-CSharp" Description="DbType to CSharp Map" %>
    <%@ Map Name="SqlCSharp" Src="Sql-CSharp" Description="System to C# Type Map" %>
    <%@ Map Name="DbDataReader" Src="DbType-DataReaderMethod" Description="DbType to DataReader Method Map" %>
    <%@ Map Name="SqlNativeSqlDb" Src="SqlNativeType-SqlDbType" Description="SqlNativeType to SqlDbType Map" %>
    
    using DapperEx;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    
    namespace BZ_FCExchange.Models.vw_estate_gb
    {
        /// <summary>
        /// 视图类 <%= View.Name%>
        /// 说明 <%=View.Description%>
        /// 操作人 cfl
        /// <%= DateTime.Now.ToLocalTime() %>
        /// </summary>
        public partial class <%=View.Name%>
        {
            #region Member Variables
     
    
            <%
            foreach(SchemaExplorer.ViewColumnSchema col in  View.Columns)
            {
            %>
            /// <summary>
            /// <%=col.Description%>
            /// 类型: <%=col.NativeType%>
            /// 字长: <%=col.Size%>
            /// 默认值: <%=col.ExtendedProperties["CS_Default"].Value%>
            /// 允空: <%=col.AllowDBNull%>
            /// </summary>
            public virtual <%= GetCSharpVariableType3(col) %> <%= col.Name %> {get; set; } 
            <%}%>
            #endregion
        }
    }
    
    <script runat="template">
    // My methods here.
    
    public string getSystem()
    {
        return "";
    }
    
    
    public string GetMemberVariableDeclarationStatement(ViewColumnSchema column)
    {
        return GetMemberVariableDeclarationStatement("private", column);
    }
    
    public string GetMemberVariableDeclarationStatement(string protectionLevel, ViewColumnSchema column)
    {
        string statement = protectionLevel + " ";
        statement += GetCSharpVariableType3(column) + " " + GetMemberVariableName(column);
        
        string defaultValue = GetMemberVariableDefaultValue(column);
        if (defaultValue != "")
        {
            statement += " = " + defaultValue;
        }
        
        statement += ";";
        
        return statement;
    }
    
    public string GetReaderAssignmentStatement(ViewColumnSchema 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 GetMemberVariableName(ViewColumnSchema column)
    {
        string propertyName = GetPropertyName(column);
        string memberVariableName = "_" + GetCamelCaseName(propertyName);
        
        return memberVariableName;
    }
    
    public string GetPropertyName(ViewColumnSchema column)
    {
        string propertyName = column.Name;
        
        if (propertyName == column.View.Name + "Name") return "Name";
        if (propertyName == column.View.Name + "Description") return "Description";
        
        if (propertyName.EndsWith("TypeCode")) propertyName = propertyName.Substring(0, propertyName.Length - 4);
        
        return propertyName;
    }
            
    public string GetMemberVariableDefaultValue(ViewColumnSchema 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";
            }
            default:
            {
                return "";
            }
        }
    }
    
    public string GetCSharpVariableType(ViewColumnSchema column)
    {
        if (column.Name.EndsWith("TypeCode")) return column.Name;
    
        return DbTypeCSharp[column.DataType.ToString()];    
    }
    
    public string GetCSharpVariableType2(ViewColumnSchema column)
    {
        string str=column.Name;
        string s=DbTypeCSharp[column.DataType.ToString()];
        switch(s)
        {
            case "string":
                str="nvarchar2";
                break;
            case "DateTime":
                str="date";
                break;
            case "int":
            case "double":
            case "decimal":
            case "short":
                str="number";
                break;
            case "byte":
            case "object":
                str="blob";
                break;
            default:break;
        }
        return str;
    }
    public string GetCSharpVariableType3(ViewColumnSchema column)
    {
        
        string s=DbTypeCSharp[column.DataType.ToString()];
        switch(s)
        {
    
            case "decimal":
            case "double":
            case "float":
            case "short":
                s="decimal";
                break;   
            case "int":
            case "integer":
                s="int";
                break;
            case "object":
                s="byte[]";
                break;
            default:break;
        }
        return s;
    }
    public string GettureOrfalse(ViewColumnSchema column)
    {
        string str=column.Name;
        string s=column.AllowDBNull.ToString();
        switch(s)
        {
            case "False":
                str="false";
                break;
            case "True":
                str="true";
                break;
            default:break;
        }
        return str;
    }
    public string GetReaderMethod(ViewColumnSchema column)
    {
        return DbDataReader[column.DataType.ToString()];
    }
    
    public string GetClassName(ViewSchema view)
    {
        if (view.Name.EndsWith("s"))
        {
            return view.Name.Substring(0, view.Name.Length - 1);
        }
        else
        {
            return view.Name;
        }
    }
    
    public string GetSqlDbType(ViewColumnSchema column)
    {
        return SqlNativeSqlDb[column.NativeType.ToString()];
    }
    /*
    public string GetPrimaryKeyType(ViewSchema view)
    {
        if (view.PrimaryKey != null)
        {
            if (view.PrimaryKey.MemberColumns.Count == 1)
            {
                return GetCSharpVariableType(view.PrimaryKey.MemberColumns[0]);
            }
            else
            {
                throw new ApplicationException("This template will not work on primary keys with more than one member column.");
            }
        }
        else
        {
            throw new ApplicationException("This template will only work on tables with a primary key.");
        }
    }
    */
    public override string GetFileName()
    {
        return this.GetClassName(this.View) + ".cs";
    }
    
    </script>
    

    相关文章

      网友评论

          本文标题:CodeSmith oracle表模型与视图模型模板

          本文链接:https://www.haomeiwen.com/subject/xdjklctx.html