zoukankan      html  css  js  c++  java
  • CodeSmith自动生成代码常用的类型转换函数

    using System;
    using System.Text;
    using System.ComponentModel;
    using CodeSmith.Engine;
    using System.Data;
    using SchemaExplorer;

    namespace CodeTemplateRule
    {
        
    /// <summary>
        
    /// CodeSmith自动生成代码所用到的函数
        
    /// </summary>

        public class CodeTemplateRule
        
    {
            
    /// <summary>
            
    /// 获取所有列的集合
            
    /// </summary>
            
    /// <param name="dataBase">数据库Schema</param>
            
    /// <param name="tableName">表名</param>
            
    /// <returns>Columns Schema</returns>

            public ColumnSchemaCollection GetColumnCollection(DatabaseSchema dataBase,string tableName)
            
    {
                TableSchemaCollection tables 
    = new TableSchemaCollection(dataBase.Tables);
                ColumnSchemaCollection columns
    =null;
                
    for(int i=0;i<tables.Count;i++)
                
    {
                    
    if(tables[i].Name.ToUpper()==tableName.ToUpper())
                    
    {
                        TableSchema ts
    =tables[i];
                        columns
    =new ColumnSchemaCollection(ts.Columns);
                    }

                }

                
    return columns;
            }

            
            
    /// <summary>
            
    /// 获取处理后的表名 例如:ORG_Person,返回Person
            
    /// </summary>
            
    /// <param name="tableName">表名</param>
            
    /// <returns>返回处理后的表名</returns>

            public string GetTableName(string tableName)
            
    {
                
    int i=tableName.IndexOf("_");
                
    return tableName.Substring(i+1,tableName.Length-(i+1));
            }

            
            
    /// <summary>
            
    /// 获取唯一号的变量名,第一个字母小写
            
    /// </summary>
            
    /// <param name="guidColumn">唯一号列名</param>
            
    /// <returns>唯一号的变量名</returns>

            public string GetGuidColumnVar(string guidColumn)
            
    {
                
    string guid;
                guid
    =guidColumn.Substring(0,1).ToLower()+guidColumn.Substring(1,guidColumn.Length-1);
                
    return guid;    
            }
            
            
            
    /// <summary>
            
    /// 获取c#变量类型
            
    /// </summary>
            
    /// <param name="column"></param>
            
    /// <returns>c#变量类型</returns>

            public string GetType(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 "int";
                    
    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;
                    }

                }

            }


            
    /// <summary>
            
    /// 获取c#变量类型默认值
            
    /// </summary>
            
    /// <param name="column"></param>
            
    /// <returns>c#变量类型默认值</returns>

            public string GetDefaultValue(ColumnSchema column)
            
    {
                
    if (column.Name.EndsWith("TypeCode")) return column.Name;
                
                
    switch (column.DataType)
                
    {
                    
    case DbType.AnsiString: return "\"\"";
                    
    case DbType.AnsiStringFixedLength: return "\"\"";
                    
    case DbType.Binary: return "null";
                    
    case DbType.Boolean: return "false";
                    
    case DbType.Byte: return "0";
                    
    case DbType.Currency: return "0";
                    
    case DbType.Date: return "DateTime.Parse(\"1900-1-1\")";
                    
    case DbType.DateTime: return "DateTime.Parse(\"1900-1-1\")";
                    
    case DbType.Decimal: return "0";
                    
    case DbType.Double: return "0";
                    
    case DbType.Guid: return "Guid.NewGuid().ToString()";
                    
    case DbType.Int16: return "0";
                    
    case DbType.Int32: return "0";
                    
    case DbType.Int64: return "0";
                    
    case DbType.Object: return "\"\"";
                    
    case DbType.SByte: return "0";
                    
    case DbType.Single: return "0";
                    
    case DbType.String: return "\"\"";
                    
    case DbType.StringFixedLength: return "";
                    
    case DbType.Time: return "DateTime.Parse(\"1900-1-1\")";
                    
    case DbType.UInt16: return "0";
                    
    case DbType.UInt32: return "0";
                    
    case DbType.UInt64: return "0";
                    
    case DbType.VarNumeric: return "0";
                    
    default:
                    
    {
                        
    return "__UNKNOWN__" + column.NativeType;
                    }

                }

            }


            
    /// <summary>
            
    /// 获取c#变量类型默认值
            
    /// </summary>
            
    /// <param name="column"></param>
            
    /// <returns>c#变量类型默认值</returns>

            public string GetConvert(ColumnSchema column)
            
    {
                
    if (column.Name.EndsWith("TypeCode")) return column.Name;
                
                
    switch (column.DataType)
                
    {
                    
    case DbType.AnsiString: return "Convert.ToString";
                    
    case DbType.AnsiStringFixedLength: return "Convert.ToString";
                    
    case DbType.Binary: return "Convert.ToByte";
                    
    case DbType.Boolean: return "Convert.ToBoolean";
                    
    case DbType.Byte: return "Convert.ToInt32";
                    
    case DbType.Currency: return "Convert.ToDecimal";
                    
    case DbType.Date: return "Convert.DateTime";
                    
    case DbType.DateTime: return "Convert.DateTime";
                    
    case DbType.Decimal: return "Convert.ToDecimal";
                    
    case DbType.Double: return "Convert.ToDouble";
                    
    case DbType.Guid: return "Convert.ToString";
                    
    case DbType.Int16: return "Convert.ToInt16";
                    
    case DbType.Int32: return "Convert.ToInt32";
                    
    case DbType.Int64: return "Convert.ToInt64";
                    
    case DbType.Object: return "Convert.ToString";
                    
    case DbType.SByte: return "Convert.ToByte";
                    
    case DbType.Single: return "Convert.ToInt32";
                    
    case DbType.String: return "Convert.ToString";
                    
    case DbType.StringFixedLength: return "Convert.ToString";
                    
    case DbType.Time: return "Convert.DateTime";
                    
    case DbType.UInt16: return "Convert.ToUInt16";
                    
    case DbType.UInt32: return "Convert.ToUInt32";
                    
    case DbType.UInt64: return "Convert.ToUInt64";
                    
    case DbType.VarNumeric: return "Convert.ToDecimal";
                    
    default:
                    
    {
                        
    return "__UNKNOWN__" + column.NativeType;
                    }

                }

            }

        }

    }
  • 相关阅读:
    无监督学习在反欺诈中的应用
    Java中Object对象方法
    ambari下httpfs安装
    深入理解spark-rdd详解
    Tensorflow实践Basic Classification
    深入理解spark-两种调度模式FIFO,FAIR模式
    深入理解spark-taskScheduler,schedulerBackend源码分析
    js模仿页面点击
    记一次请求走私学习
    十种常见的报错注入
  • 原文地址:https://www.cnblogs.com/gghxh/p/665733.html
Copyright © 2011-2022 走看看