经过网友和昨天朋友的建议,今天我把NDOGenerator 代码生成器进行了重构,并在GUI上进行了增强,现在的NDOGenerator 生成器已经是一个通用的,使用方便的,易于扩展的代码生成器了。

      在我的

NDOGenerator 代码生成器的配置如下:

再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器<?xml version="1.0" encoding="utf-8" ?>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
<configuration>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器    
<configSections>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器        
<section name="generator" type="NDO.Configuration.ProviderConfigurationHandler, NDO.Common"/>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器    
</configSections>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器    
<appSettings>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器        
<add key="ConnectionString" value="Data Source=localhost; Database=Northwind; Integrated Security=true;"/>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器        
<add key="JetConnectionString" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Northwind.mdb;"/>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器        
<add key="OracleConn" value="Provider=MSDAORA.1;Data Source=***;User ID=***;Password=***;"/>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器        
<add key= "SqlOledb" value="Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;User ID=sa;Password=;"/>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器        
<add key="Oracle" value="Data Source=***;User ID=***;Password=***;"/>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器    
</appSettings>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器    
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器    
<generator defaultProvider="Test.Driver">
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器        
<providers>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器            
<clear/>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器            
<!-- outLanguage ="CSHARP,VBNET,ASPX,HTML,JAVA,JAVASCRIPT,SQL,XML,CPP"-->
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器            
<add 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                
name="simple" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                type
="NDO.Tools.SimpleGenerator,NDO.Tools"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                helper
="NDO.Tools.CSHelper,NDO.Tools"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outLanguage 
="CSHARP"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                templateName 
="Model.vm" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outDir
="D:\temp\NW\Model"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outExtensionName
=".cs" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                ns
="NDOTest.Model"/>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器            
<add 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                
name="javaModel" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                type
="NDO.Tools.SimpleGenerator,NDO.Tools"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                helper
="NDO.Tools.JavaHelper,NDO.Tools"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outLanguage 
="Java"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                templateName 
="Java.Model.vm" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outDir
="D:\temp\NW\Model"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outExtensionName
=".java" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                ns
="NDOTest.Model"/>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器            
<add 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                
name="javaModel2" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                type
="NDO.Tools.SimpleGenerator,NDO.Tools"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                helper
="NDO.Tools.JavaHelper,NDO.Tools"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outLanguage 
="Java"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                templateName 
="Java.Model2.vm" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outDir
="D:\temp\NW\Model"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outExtensionName
=".java" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                ns
="NDOTest.Model"/>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器            
<add 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                
name="ndoEntity" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                type
="NDO.Tools.SimpleGenerator,NDO.Tools"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                helper
="NDO.Tools.NDOHelper,NDO.Tools"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outLanguage 
="CSHARP"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                templateName 
="NDO.Entity.vm" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outDir
="D:\temp\NW\Model"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outExtensionName
=".cs" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                ns
="NDOTest.Model"/>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器            
<add 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                
name="ndoActiveRecord" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                type
="NDO.Tools.SimpleGenerator,NDO.Tools"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                helper
="NDO.Tools.NDOHelper,NDO.Tools"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outLanguage 
="CSHARP"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                templateName 
="NDO.ActiveRecord.vm" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outDir
="D:\temp\NW\Model"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outExtensionName
=".cs"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                isInMeta 
="0" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                ns
="NDOTest.Model"/>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器            
<add 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                
name="ndoActiveRecord2" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                type
="NDO.Tools.SimpleGenerator,NDO.Tools"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                helper
="NDO.Tools.NDOHelper,NDO.Tools"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outLanguage 
="CSHARP"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                templateName 
="NDO.ActiveRecord2.vm" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outDir
="D:\temp\NW\Model"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outExtensionName
=".cs"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                isInMeta 
="0" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                ns
="NDOTest.Model"/>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器            
<add 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                
name="Test.Driver" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                type
="NDO.Tools.SimpleGenerator,NDO.Tools"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                helper
="NDO.Tools.NDOHelper,NDO.Tools"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outLanguage 
="CSHARP"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                templateName 
="Test.Driver.vm" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outDir
="D:\temp\NW\Model"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                outExtensionName
=".cs"
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                isInMeta 
="0" 
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器                ns
="NDOTest.Model"/>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器        
</providers>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
</generator>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
</configuration>
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器


在SimpleGenerator 命令对象中向 Velocity 引擎注入了一个 driver 对象,该驱动器对象实现了数据库元数据提供者接口,所以在任何一个模板文件中都可以自由自在的操作整个数据库的元数据。比如下面的 模板文件代码:

再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
-----------------------     Driver Info -------------------------------
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器Current ConnectionString  :$driver.ConnectionString
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器Driver.NamedPrefix        :$driver.NamedPrefix
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器Dialect.OpenQuote         :$driver.Dialect.OpenQuote
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器Dialect.CloseQuote        :$driver.Dialect.CloseQuote
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
#if ($driver.SupportsIdentitySelectInInsert)
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器 Dialect.IdentitySelectString :$driver.Dialect.IdentitySelectString
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#end
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
-----------------------    End Driver Info ----------------------------
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
-----------------------     All  Tables -------------------------------
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#
set($sc = $driver.GetTableList())
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#
foreach($s in $sc)
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器$s
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#
set($cols = $driver.GetTableSchema($s).Columns)
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#
foreach($col in $cols)
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器        $col.Name   $col.ColumnType   $col.DbType     $col.Length        
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#end
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#end
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
-----------------------     End  Tables -------------------------------
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
-----------------------     All  Views -------------------------------
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#
set($sc = $driver.GetViewList())
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#
foreach($s in $sc)
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器$s
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#
set($cols = $driver.GetViewSchema($s).Columns)
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#
foreach($col in $cols)
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器        $col.Name   $col.ColumnType   $col.DbType     $col.Length
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#end
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#end
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
-----------------------     End  Views -------------------------------
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
-----------------------     All  Procudures --------------------------
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#
set ($pss = $driver.GetSPList())
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#
foreach($ps in $pss)
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器$ps
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#
set($parameters = $driver.GetSPSchema($ps).Parameters)
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#
foreach($parameter in $parameters)
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器        $parameter.Name        $parameter.DbType        $parameter.NativeType        $parameter.Direction        $parameter.Size    
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#end
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器#end
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
-----------------------     End  Procudures---------------------------


 .NET 实体类的模板文件

再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器using System;
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
namespace $ns
}


.NET 实体类的模板文件2 - 基于扩展"标签" Helper

再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器using System;
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器
namespace $ns



下面是几个GUI截图:
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器


再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器


再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器

日志信息:
再谈代码生成器 - 以NDOGenerator(基于模板引擎和插件)代码生成器

   最后附上代码生成器原代码和新版本的NDO组件(增强了对视图的支持,以及非活动记录的单表ORM的支持)

相关文章: