大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > ASP.NET技巧 > CodeSmith 使用教程(14) 使用SchemaExplorer来获取数据库定义

CodeSmith 使用教程(14) 使用SchemaExplorer来获取数据库定义(3)

关键词:CodeSmith使用教程  阅读(1584) 赞(17)

[摘要]本文主要介绍CodeSmith 使用教程(14) 使用SchemaExplorer来获取数据库定义,希望对你解决相关问题提供帮助。

选择一个表的多个列(ColumnSchemaCollection)

对应这些集合类型(比如TableSchemaCollection,ColumnSchemaCollection)缺省的排序是由数据库决定的,因此可能不是排好序的,如果需要排序的话,可以通过Sort方法来实现,比如:

TableSchemaCollection tables = new TableSchemaCollection(SourceDatabase.Tables);
tables.Sort(new PropertyComparer("Name"));

SQL Server数据库可以对表或列定义一些附加的属性(Extended Property)SchemaExplorer 也提供了方法可以来访问/添加 这些Extended Property。
比如SQL Server定义一个扩展属性表示某个列是否为Identity列,这可以通过下面代码来获取:

Identity Field = <% foreach(ColumnSchema cs in SourceTable.Columns) {
    if( ((bool)cs.ExtendedProperties["CS_IsIdentity"].Value) == true) {
        Response.Write(cs.Name);
    }
} %>

更好的方法是使用SchemaExplorer.ExtendedPropertyNames类和ExtendedProperty定义的扩展方法。

例如:

Identity Field = <% foreach(ColumnSchema cs in SourceTable.Columns) {
    if(cs.ExtendedProperties.GetByKey<bool>(SchemaExplorer.ExtendedPropertyNames.IsIdentity) == true) {
        Response.Write(cs.Name);
    }
} %>

CodeSmith缺省支持的扩展属性如下:



相关评论