代码生成利器-NCodeGenerate 教程(3) 生成代码到文件.

 NCodeGenerate 可以直接把生成的内容输出到文件.

这种机制是通过一个叫FileRender 的类实现的。现在通过一个例子来演示一下。

新建模板,在Model 中输入以下代码:

 1 using System;
 2 using System.ComponentModel;
 3 
 4 using NCodeGenerateIDE;
 5 using NCodeGenerate.DBSchema;
 6 namespace DynamicCodeGenerate
 7 {
 8     public class myModel
 9     {
10       
11         private System.String _Namespace = string.Empty;
12         public System.String Namespace
13         {
14             get { return _Namespace; }
15             set { _Namespace = value; }
16         }
17         private System.String _RemoveTablePrefix = string.Empty;
18         public System.String RemoveTablePrefix
19         {
20             get { return _RemoveTablePrefix; }
21             set { _RemoveTablePrefix = value; }
22         }
23         private TableSchema _SourceTable;
24         [Editor(typeof(TableEditor), typeof(TableEditor))]
25         public TableSchema SourceTable
26         {
27             get { return _SourceTable; }
28             set { _SourceTable = value; }
29         }
30         private DatabaseSchema _DataBase;
31         [Editor(typeof(DataBaseEditor), typeof(DataBaseEditor))]
32         public DatabaseSchema DataBase
33         {
34             get { return _DataBase; }
35             set { _DataBase = value; }
36         }
37         private System.String _OutPutDir = string.Empty;
38         [Editor(typeof(FolderEditor), typeof(FolderEditor))]
39         public System.String OutPutDir
40         {
41             get { return _OutPutDir; }
42             set { _OutPutDir = value; }
43         }
44        
45 
46     }
47 }

注意:代码中的第38行,

[Editor(typeof(FolderEditor), typeof(FolderEditor))]
这句代码是定义输出路径的字段   public System.String OutPutDir 在属性设置界面中调用路径选择对话框。
设置这个特性后在属性设置时,可以出现如下界面:

 
 

 第二步,在模板中输入如下代码:

 1 @model DynamicCodeGenerate.myModel
 2 @using NCodeGenerateIDE
 3 
 4 @{
 5 
 6 
 7     foreach(var item in Model.DataBase.Tables)
 8     {
 9         FileRender render = new FileRender(Request.TemplatePath+"\\demo1.cg",Model.OutPutDir + "\\" +item.Name + ".cs");
10          var model = render.Model;
11             
12                
13                 model.Namespace = "myproc";
14                 model.RemoveTablePrefix = "";
15                 model.SourceTable = item;
16                 
17                 
18            
19          render.Render();
20          
21         <text>TableName=@item.Name</text>
22     }
23 }

 

 这里解释一下, 代码   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 教程(6) 调试功能 NTrace 输出

八、代码生成利器-NCodeGenerate 教程(7) 揭开调试功能 的神秘面纱

九、代码生成利器-NCodeGenerate 教程(8) 揭开Razor模板引擎的神秘面纱

十、代码生成利器-NCodeGenerate 教程(9) 数据类型映射Map功能

转载于:https://www.cnblogs.com/NCodeGenerate/archive/2012/12/26/NCodeGenerate_4.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值