posts - 185,  comments - 1071,  trackbacks - 43

        CodeSmith真是一个非常出色的工具使用它已经有很长时间,它的引擎真的很不错加上又是免费的,这么好的东西我们那能浪费它.这个代码生成工具已经写了很了主要是用于生成sql artisan组件的数据库映射文件。其实映射文件这东西CodeSmith提供的功能都可以完成,为什么还去写这样一个工具,主要原因在早期的版本对Oracle支持不太好,所以干脆调用CodeSmith引擎来实现一个代码生成工具.近期对工具作了一点调整使用上感觉挺方便所以发布出来.

       工具功能非常简单提供了数据库连接管理和模板管理,使者可以根据自己的需要实现新的代码模板并添加到工具中(前提是必须熟悉CodeSmith模板编写和工具的扩展接口),具体细节就要看工具的源码了;工具还没有完善有兴趣的朋友可以对它进行修改完善。

       其实CodeSmith引擎非常实用包括:报表文件生成、数据输出文件等。有兴趣的朋友可以在这方面多交流学习。
下载工具源码
工具相关图片


posted on 2006-05-27 11:57 henry 阅读(2503) 评论(17)  编辑 收藏 网摘

FeedBack:
2006-05-27 15:24 | 双鱼座      
1.CodeSmith有VS的插件否?没有的话无法建立项目文件依赖;
2.不要犯和Lxx一样的错误,不要试图从数据库结构获取对象元数据;
btw:纠正一下,entity的复数是entities而不是entitys

  回复  引用  查看    
#2楼[楼主]
2006-05-27 15:37 | henry      
不需要安装CodeSmith,
CodeSmith.BaseTemplates.dll等几个DLL是可以拷贝使用的.
工具在没有安装CodeSmith的环境也可以正常运行.

  回复  引用  查看    
2006-05-27 16:17 | gozh2002
CodeSmith is not a free, right?
  回复  引用    
#4楼[楼主]
2006-05-27 16:23 | henry      
2.6和之前的版本引擎是免费使用的,你只需部署相关的几个DLL就可以使用引擎功能.
一个项目的报表就是用它来做,在客户的服务器上工作快一年了.

  回复  引用  查看    
2006-05-28 15:16 | 冬冬      
在我的blog有关于CodeSmith的一些深入的讨论,有兴趣的可以看一下
  回复  引用  查看    
2006-05-29 16:37 | Cure      
觉得双鱼座的观点很有道理。当领域模型和数据库同构的时候,这样的基于表结构的映射是可以的,但是当领域模型和数据库异构的时候,这样做显然是不行的,
我觉得还是把领域模型生成xml,然后从xml获取领域对象的好。

  回复  引用  查看    
2006-05-29 16:53 | 5416[未注册用户]
老兄,可否给一个最简单的表映射模版,如下所示:
[Serializable]
public class NewDealerEmpolder
{
private string mID;
private string mCustomerName;
private string mSellMode;
private string mSellType;
private string mSellExperience;
private string mMensalSaleAmount;
private string mForce;
private string mEconomyStrength;
private DateTime mWriterDate;
private string mWriterID;
private string mWriterCoID;

public string ID
{
get
{
return mID;
}
set
{
mID = value;
}
}

public string CustomerName
{
get
{
return mCustomerName;
}
set
{
mCustomerName = value;
}
}
。。。。。。

  回复  引用    
#8楼[楼主]
2006-05-30 10:34 | henry      
@Cure
我觉得根据情况来选择映射描述比较好,对于比较频繁地修改还需要人手参与的情况下XML不是很好的选择.当手工编写数据载体时修改一个文件总会比两个文件来得高效和方便.在数据结构映射结构上我感觉代码的attribute比xml描述在使用和维护上都比较方便.
如果完全通过领域模型生成xml,然后从xml获取领域对象(不依赖程序集信息)这个时候xml描述就是一个很好的选择.
@5416
你需要的可以通过以下地址下载
http://www.cnblogs.com/Files/henryfan/CodeTemplates.rar">http://www.cnblogs.com/Files/henryfan/CodeTemplates.rar

  回复  引用  查看    
2006-05-30 13:29 | 5416[未注册用户]
这两个文件怎么用啊,我是VS2005不能编译工程,请问可否给一个编译过后可运行的文件啊?
  回复  引用    
#10楼[楼主]
2006-05-30 13:50 | henry      
@5416
http://www.cnblogs.com/Files/henryfan/ORMEntityFile.rar">http://www.cnblogs.com/Files/henryfan/ORMEntityFile.rar
把模板文件拷贝到程序运行目录下,把原文件替换就可以了.
选择"SqlArtisan表结构ORM映射"就行了.

  回复  引用  查看    
2006-05-30 14:30 | 5416[未注册用户]
非常感谢,不可可惜数据类型是OBJECT,如果VARCHAR2能对应STRING等等就好了
  回复  引用    
2006-05-30 14:49 | siuman[未注册用户]
请问有VB的模板么
  回复  引用    
2006-09-19 00:31 | Slash      
支持先 谢谢
  回复  引用  查看    
2007-03-09 15:04 | highmayor[未注册用户]
您好,我下了你的工具,包括源代码,非常的佩服你,虽然我现在还没弄清思路。另外我发现你引用了一个HFSoft.Data.dll的库,请问这个是做什么用的,有没有源代码可以参照一下吗?如果能,请发给我一份。谢谢!
我的email:highmayor@yahoo.com.cn

  回复  引用    
#15楼[楼主]
2007-03-09 15:28 | henry      
@highmayor
在这个工具里只是用到HFSoft.Data.dll中的IDriver接口和实现.
对于HFSoft.Data.dll源不能提供抱歉,IDriver定义如下:
public interface IDriver
{

string FormatNameForParameter(string parametername);
IDataParameter GetParameter();
IDataParameter GetParameter(string name, object value);
IDataParameter GetParameter(string name, object value, ParameterDirection direction);
IDbCommand Command { get; }
IDbConnection Connection { get; }
IDbDataAdapter DataAdapter { get; }
string NamedPrefix { get; }
}
其实就是通过这个接口操作隔离数据库类型.


  回复  引用  查看    
2007-03-16 11:41 | highmayor[未注册用户]
"不要试图从数据库结构获取对象元数据"是什么意思啊,请高手解释一下吧
  回复  引用    
2008-03-04 13:36 | bluesky4485      
http://www.cnblogs.com/bluesky4485/archive/2008/03/03/1088652.html

帮忙看一下这个,我用它例子里面的转换了一个,代码不能用。

  回复  引用  查看    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 410600




相关文章:

相关链接:
<2007年3月>
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567

与我联系

搜索

 

常用链接

留言簿

我参加的小组

我的标签

随笔分类

最新评论

60天内阅读排行