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

2019-07-18  本文已影响0人  Rinaloving

表模型模板

<%@ 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>
上一篇 下一篇

猜你喜欢

热点阅读