代码生成利器-NCodeGenerate 教程(3) 生成代码到文件.
来源:互联网 发布:安装电视猫软件 编辑:程序博客网 时间:2024/06/05 11:27
NCodeGenerate 可以直接把生成的内容输出到文件.
这种机制是通过一个叫FileRender 的类实现的。现在通过一个例子来演示一下。
新建模板,在Model 中输入以下代码:
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; } } }}
注意:代码中的第38行,
[Editor(typeof(FolderEditor), typeof(FolderEditor))]
这句代码是定义输出路径的字段 public System.String OutPutDir 在属性设置界面中调用路径选择对话框。
设置这个特性后在属性设置时,可以出现如下界面:
第二步,在模板中输入如下代码:
@model DynamicCodeGenerate.myModel@using NCodeGenerateIDE@{ foreach(var item in Model.DataBase.Tables) { FileRender render = new FileRender(Request.TemplatePath+"\\demo1.cg",Model.OutPutDir + "\\" +item.Name + ".cs"); var model = render.Model; model.Namespace = "myproc"; model.RemoveTablePrefix = ""; model.SourceTable = item; render.Render(); <text>TableName=@item.Name</text> }}
这里解释一下, 代码 FileRender render = new FileRender(Request.TemplatePath+"\\demo1.cg",Model.OutPutDir + "\\" +item.Name + ".cs"); 是产生一个FileRender 对象,一共有两个参数,第一个是 模板文件的路径,第二个输出文件的路径。 在上面的代码中,Request 是一个请求对象,是模板自带的属性。它有一个字段 TemplatePath 代表当前模板所在的路径。
生成好FileRender后 要给他的 Model 赋值。 代码 var model = render.Model; 获取 FileRender 的Model 对象,然后就是 逐一给给Model 的属性赋值。具体Model 有哪些属性,都是什么含义。
你要看 Request.TemplatePath+"\\demo1.cg" 对应的模板文件里边 Model 的定义了。
这里要着重强调一下 当前模板 的Model 类名,命名空间不能和被调用模板的 Model 的类名和命名空间冲突,否则运行时汇报绑定错误。
最后调用 render.Render(); 输入生成结果到文件中。
附: NCodeGenerate 新增了 NCodeGenerate.DBSchema 的文档,在下面的文档连接中。
附上下载地址:
NCodeGenerate.zip
文档:文档
NCodeGenerate 系列文章:
一、代码生成利器-NCodeGenerate 是什么?
二、代码生成利器-NCodeGenerate 教程(1) 遍历数据库内的所有表
三、代码生成利器-NCodeGenerate 教程(2) NCodeGenerate的代码公用之一
四、代码生成利器-NCodeGenerate 教程(3) 生成代码到文件.
五、 代码生成利器-NCodeGenerate 教程(4) CodeSmith模板转换
六、代码生成利器-NCodeGenerate 教程(5) 多种数据库的支持
- 代码生成利器-NCodeGenerate 教程(3) 生成代码到文件.
- 代码生成利器-NCodeGenerate 是什么?
- 代码生成利器-NCodeGenerate 教程(4) CodeSmith模板转换
- 代码生成利器-NCodeGenerate 教程(5) 多种数据库的支持
- 代码生成利器-NCodeGenerate 教程(6) 调试功能 NTrace 输出
- 代码生成利器-NCodeGenerate 教程(9) 数据类型映射Map功能
- 代码生成利器-NCodeGenerate 教程(2) NCodeGenerate的代码公用之一
- 代码生成利器-NCodeGenerate 教程(1) 遍历数据库内的所有表
- 代码生成利器-NCodeGenerate 教程(7) 揭开调试功能 的神秘面纱
- 代码生成利器-NCodeGenerate 教程(8) 揭开Razor模板引擎的神秘面纱
- 代码动态生成利器ASM
- 代码动态生成利器ASM
- 代码动态生成利器ASM
- 代码动态生成利器ASM
- 代码动态生成利器ASM
- 代码动态生成利器ASM
- 代码动态生成利器ASM
- 生成excel文件代码
- document.createElement()的用法
- Java中基本数据类型和包装数据类型在Hibernate中使用
- VC内存泄露检查工具:Visual Leak Detector
- secureCRT,sftp的用法
- 超市pos源码 小学生作品 vs2008+Access
- 代码生成利器-NCodeGenerate 教程(3) 生成代码到文件.
- 如何修改网站标题
- SubversionEdge安装手册
- VC读写ini文件(第三方开源类)
- 判断android设备内存卡的剩余空间
- dotcloud初步
- 图片可以拖到任意位置
- InnoDB 引擎独立表空间 innodb_file_per_table
- 如何修改网站标题减少被处罚