NCodeGenerate 的NCodeGenerate.DBSchema程序集里边的各个类对应着数据库里边个各种对象,有数据库(DatabaseSchema),表(TableSchema),列(ColumnSchema),主键(PrimaryKeySchema),键(TableKeySchema),视图(ViewSchema),存储过程(CommandSchema)等。
下面作一个小的Demo,遍历以下数据库内的所有表的所有字段并打印出来。
1、新建模板
在模型中输入以下内容:
using System;
using System.ComponentModel;
using NCodeGenerateIDE;
using NCodeGenerate.DBSchema;
namespace DynamicCodeGenerate
{
public class myModel
{
private System.String _Namespace = string.Empty;
public System.String Namespace
{
get { return _Namespace; }
set { _Namespace = value; }
}
private System.String _RemoveTablePrefix = string.Empty;
public System.String RemoveTablePrefix
{
get { return _RemoveTablePrefix; }
set { _RemoveTablePrefix = value; }
}
private TableSchema _SourceTable;
[Editor(typeof(TableEditor), typeof(TableEditor))]
public TableSchema SourceTable
{
get { return _SourceTable; }
set { _SourceTable = value; }
}
private DatabaseSchema _DataBase;
[Editor(typeof(DataBaseEditor), typeof(DataBaseEditor))]
public DatabaseSchema DataBase
{
get { return _DataBase; }
set { _DataBase = value; }
}
private System.String _OutPutDir = string.Empty;
[Editor(typeof(FolderEditor), typeof(FolderEditor))]
public System.String OutPutDir
{
get { return _OutPutDir; }
set { _OutPutDir = value; }
}
}
}
对以上代码解释一下,
private TableSchema _SourceTable; [Editor(typeof(TableEditor), typeof(TableEditor))] public TableSchema SourceTable { get { return _SourceTable; } set { _SourceTable = value; }
}
是对模型定义一个数据可以表的字段,其中 [Editor(typeof(TableEditor), typeof(TableEditor))] 是定义在属性设置里边调用数据库表的选择器。同样的代码中的30-36行定义了一个数据库的属性。
在代码中输入以下内容:
@model DynamicCodeGenerate.myModel
@{
foreach(var item in Model.DataBase.Tables){
@:TableName:@item.Name
foreach(var itemcolumn in item.Columns)
{
@:Column:@itemcolumn.Name
}
}
}
解释一下: @model DynamicCodeGenerate.myModel,这一句代码和asp.net mvc3 里边Razor里边的强类型Model的含意一样。在这里就是第一段Model定义代码中的 命名空间和类名。
在代码中只用到了 Model.DataBase,所以我们只需要在属性设置对话框里边设置一下数据库就行了。
点击DataBase字段对属性进行设置。
好了保存一下模板,然后运行,看结果了吧。
真是so easy!
下载地址:NCodeGenerate.zip
NCodeGenerate 系列文章: