本文来自: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 :列的默认值