開發輔助工具Kalman Studio2.0發佈,內置基於T4的代碼生成器

最初開發該軟件的目標是做成一個開發輔助工具來提高工作效率,代碼生成器只是作爲其中的一個功能,以前發佈過該軟件的一個粗糙的版本,bug有不少,現在系統的整理了一下,修改了不少bug,這次最大的改動就是將原來代碼生成器通過SMO取SQL Server元數據信息改成了使用系統存儲過程,重寫了SqlServerSchemaProvider模塊,並重構了批量代碼生成界面本軟件主要功能如下:

1、基於T4的代碼生成工具,根據數據庫元數據信息生成代碼,支持多數據庫,支持批量代碼生成

2、支持根據PowerDesigner物理模型文件來生成代碼,這也是該軟件的最大亮點,爲此專門花了一天時間寫了個PDM文件解析模塊

3、內置了一個簡單的文本編輯器,支持代碼高亮顯示

4、數據庫元數據信息瀏覽工具

5、數據庫文檔生成工具,支持輸出word及pdf文件格式

6、IIS日誌解析器,小網站可以用用

7、其他工具,字符串相關操作等

下載地址:http://files.cnblogs.com/lingyun_k/Kalman.Studio2.0.rar

下面是軟件主界面截圖

kalman studio2.0 ui

更多軟件截圖可以參考http://www.cnblogs.com/lingyun_k/archive/2010/05/08/1730771.html

數據庫鏈接字符串配置示例

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<configSections>
	</configSections>
	<connectionStrings>
		<clear/>
		<add name="Localhost" connectionString="Data Source=.;Integrated Security=SSPI;Persist Security Info=False;" />
		<add name="MySql_Local" connectionString="Server=127.0.0.1;Database=test;Uid=root;Pwd=123456;" providerName="MySql.Data.MySqlClient"/>
		<add name="SQLite" connectionString="Data Source=F:\data\sqlite3\testdb.s3db;Version=3;" providerName="System.Data.SQLite"/>
	</connectionStrings>

	<system.data>
		<DbProviderFactories>
			<clear/>
			<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
			<add name="MySqlClient Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySql" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
			<add name="DB2 Data Provider" invariant="IBM.Data.DB2" description=".Net Framework Data Provider for DB2" type="IBM.Data.DB2.DB2Factory, IBM.Data.DB2" />
		</DbProviderFactories>
	</system.data>
</configuration>
 
 

一個實體模板的編寫示例

<#@ template language="C#v3.5" hostSpecific="true" debug="true" #>
<#@ output extension=".cs" #>
<# 
	TableHost host = (TableHost)(Host); 
	SOTable table = host.Table;
	List<SOColumn> list = host.ColumnList;
	string nameSpace = host.GetString("NameSpace");
	string className = host.GetString("ClassName");
	if(string.IsNullOrEmpty(nameSpace))nameSpace = "Entity";
	if(string.IsNullOrEmpty(className))className = table.Name;
#>
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace <#= nameSpace #>
{
	/// <summary>
    /// <#= table.Comment == "" ? table.Name : table.Comment.Replace("\r\n"," ") #>
    /// </summary>
	[Serializable]
	public partial class <#= className #>
	{
		<# foreach (SOColumn c in list)
		{ 
			string cname = c.Name;
		#>private <#= TypeUtil.DbType2TypeString(c.DataType) #> <#= "_"+cname #>;
		
		/// <summary>
        /// <#= c.Comment == "" ? c.Name : c.Comment.Replace("\r\n"," ") #>
        /// </summary>
		public <#= TypeUtil.DbType2TypeString(c.DataType) #> <#= cname #> 
		{ 
			get{ return <#= "_"+cname #>;}
			set{ <#= "_"+cname #> = value;} 
		}
		
		<# } #>	
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章