zoukankan      html  css  js  c++  java
  • CodeSmith学习笔记

    本文来自:http://blog.okbase.net/haobao/archive/32.html

    表格名称

    <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="1. Context" Description="Table that the documentation should be based on." %>

    <%=SourceTable%>

    不含dbowner的表格名称

    <%=SourceTable.Name%>

    将表中所有列名作为参数

    void myfunction(<% for (int i = 0; i < SourceTable.Columns.Count; i++) { %><%=CSharpAlias[SourceTable.Columns[i].SystemType.FullName]%> <%=SourceTable.Columns[i].Name%><% if (i < SourceTable.Columns.Count-1) { %>, <% } %><% } %>)

    主键列名

    SourceTable.PrimaryKey.MemberColumns[0].Name

    主键的SQL数据类型

    SourceTable.PrimaryKey.MemberColumns[0].NativeType

    列名

    SourceTable.Columns[i].Name

    列的数据长度

    SourceTable.Columns[i].Size

    列的系统数据类型

    SourceTable.Columns[i].SystemType.FullName

    Sql本地数据类型转换到SqlDbType类型

    <%@ Map Name="SqlNativeSqlDb" Src="SqlNativeType-SqlDbType" Description="SqlNativeType to SqlDbType Map" %>

    public string GetSqlDbType(ColumnSchema column)

    {

    return SqlNativeSqlDb[column.NativeType.ToString()];

    }

    自己写的方法:

    GetSqlDbType(SourceTable.Columns[i])

    public string GetSqlDbType(ColumnSchema column)

    switch (column.NativeType.ToLower()) 

    case "bigint": return "SqlDbType.BigInt"; 

    case "binary": return "SqlDbType.Binary"; 

    case "bit": return "SqlDbType.Bit"; 

    case "char": return "SqlDbType.Char"; 

    case "datetime": return "SqlDbType.DateTime"; 

    case "decimal": return "SqlDbType.Decimal"; 

    case "float": return "SqlDbType.Float"; 

    case "image": return "SqlDbType.Image"; 

    case "int": return "SqlDbType.Int"; 

    case "money": return "SqlDbType.Money"; 

    case "nchar": return "SqlDbType.NChar"; 

    case "ntext": return "SqlDbType.NText"; 

    case "numeric": return "SqlDbType.Decimal"; 

    case "nvarchar": return "SqlDbType.NVarChar"; 

    case "real": return "SqlDbType.Real"; 

    case "smalldatetime": return "SqlDbType.SmallDateTime"; 

    case "smallint": return "SqlDbType.SmallInt"; 

    case "smallmoney": return "SqlDbType.SmallMoney"; 

    case "sql_variant": return "SqlDbType.Variant"; 

    case "sysname": return "SqlDbType.NChar"; 

    case "text": return "SqlDbType.Text"; 

    case "timestamp": return "SqlDbType.Timestamp"; 

    case "tinyint": return "SqlDbType.TinyInt"; 

    case "uniqueidentifier": return "SqlDbType.UniqueIdentifier"; 

    case "varbinary": return "SqlDbType.VarBinary"; 

    case "varchar": return "SqlDbType.VarChar"; 

    default: return "__UNKNOWN__" + column.NativeType; 

    }

    系统数据类型转换为C#数据类型

    <%@ Map Name="CSharpAlias" Src="System-CSharpAlias" Description="System to C# Type Map" %>

    CSharpAlias[SourceTable.Columns[i].SystemType.FullName]

    SQL Server数据类型转换到C#数据类型

    <%@ Map Name="SqlCSharp" Src="Sql-CSharp" Description="SQL Server data type to C# data type map" %>

    public string GetCSharpType(ColumnSchema column)

    {

    return SqlCSharp[column.NativeType.ToString()];

    }

    判断是否为自增长列

    if( ((bool)SourceTable.Columns[i].ExtendedProperties["CS_IsIdentity"].Value) == true)

    {

    Response.Write(SourceTable.Columns[i].Name);

    }

    让codesmith支持中文

    1)Tools->Options...->Studio->Editor->Enable unicode support将这个选项勾上。

    2)在模板文件的CodeTemplate声明中加上ResponseEncoding="UTF-8 "属性:

    <%@ CodeTemplate ResponseEncoding="UTF-8" TargetLanguage="Text" Src="" Inherits="" Debug="False" CompilerVersion="v3.5" Description="Template description here." %>

     

    其它参考信息:

    /r/n   /r是换行 /n是回车换行

    SchemaExplorer.TableSchema类:是CodeSmith中自带的一个类,它描述表的结构。

    Name属性:表的名称

    Columns属性:表中列的集合

    ExtendedProperties属性:表中指定列的扩展信息 

    ForeignKeyColumns属性:表的一个外键列的集合

    ForeignKeys属性:表的外键集合

    HasPrimaryKey属性:返回表中是否存在主键

    NonForeignKeyColumns属性:表中非外键列的集合

    NonKeyColumns属性:表中非外键,非主键列的集合

    NonPrimaryKeyColumns属性:表中非主键列的集合

    PrimaryKey属性:表中的主键

    表中指定列的扩展属性 (ExtendedProperties属性):

      CS_IsIdentity:自增长列

      CS_IsComputed :计算列

      CS_IdentitySeed :自增长列的起始值

      CS_IdentityIncrement :自增长列的步长

      CS_Default :列的默认值

  • 相关阅读:
    浏览器是怎样工作的二:渲染引擎 HTML解析(1)(转)
    凯文.都迪的超级记忆力训练教程
    程序员的修炼之道
    我编程我快乐——程序员的职业规划
    SQL Server 数据库备份和还原认识和总结(一)
    SQL Server 管理数据收集
    汇总SQL Server里的相关运算符、子句、谓词等
    SQL Server 数据库备份和还原认识和总结(二)
    解决报表控件报CS0433错误
    通过笔记本配件,理解抽象类接口和委托事件
  • 原文地址:https://www.cnblogs.com/superfeeling/p/2868361.html
Copyright © 2011-2022 走看看