代码改变世界

code smith模板改进——为实体自动添加数据源描述

2009-10-27 12:37  莫耶  阅读(1244)  评论(0编辑  收藏  举报

Spring.net Dao的改进——使用属性类描述实体数据源 中,我们借助属性类描述每一个实体,藉此实现Dao的精简。

接下来的问题便是,这些实体如果手写工作量还真不小,当然,也可以使用代码生成工具,比如 CodeSmith ,使用方法可参考 .net企业级架构实战之4——Spring.net下的nHibernate数据访问模板一文,这里要说到的是,使用codeSmith在实体模板中编写一些简单的程序语句,使生成的类文件就已经包含数据源的描述元标记(理论上可以无限扩展)。

这里放出一个 nHernate实体及hbm.xml生成模板 for codesmith ,把它下载解压到...\My Documents\CodeSmith\Templates下即可使用,执行文件为NHibernate.cst。

此例中,主要改动的是NHibernate.class.cst,生成C#实体类的模板:

NHibernate.class.cst

public class 声明加上两段元标记,语法和C#一样:

[Serializable]

[TableInfo(TableName = "<%= ClassTable(SourceTable) %>", PrimaryKey = "<%= ColumnName(SourceTable.PrimaryKey.MemberColumns[0])%>" , Columns="
<% for(int i=0;i<SourceTable.Columns.Count;i++{%>
<%=ColumnName(SourceTable.Columns[i]) + (i==SourceTable.Columns.Count-1 ? "":","%>
<%}
%>")]
public class <%= ClassName(SourceTable) %>

 运行,生成,就是我们需要的实体: