开发辅助工具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;} 
		}
		
		<# } #>	
	}
}

 

posted @ 2011-06-23 23:41  kalman  阅读(5747)  评论(20编辑  收藏