代码生成器,信息化基础建设 改善代码生成


数据库字段映射

当看到一个实体的属性,是否可以马上判断出它对应的数据库字段?
_languageTranslation.KeyText, 比如看到这个KeyText的属性
通常的做法是,去查找实体与数据库字段绑定的代码,以检查这个属性关联的数据库字段,代码可能是这样
public LanguageTranslationEntity ReaderBind(IDataReader dataReader)
{
LanguageTranslationEntity model=new LanguageTranslationEntity ();
object ojb;
model. KeyText =dataReader[“KEY_TEXT"].ToString();
model.Description=dataReader["Description"].ToString();
}
看到KeyText属性对应的数据库字段是KEY_TEXT. 但是,你需要用F12,转到定义,来帮忙查看这个ReaderBind方法,如果加上了接口与实现,还需要额外的搜索才能确定字段来源。
改进的一种办法,是利用C#的Xml注释与智能感知,如下图
clip_image002信息化基础建设 改善代码生成代码生成器
在生成的实体文件中,加上Xml注释,当鼠标指向一个属性时,可得到如下的效果
clip_image003clip_image002信息化基础建设 改善代码生成代码生成器
从这个图片中可以看出KeyText映射到表LanguageTransaction的KeyText字段,非常清晰。
适当的修改一下生成实体的代码生成器,给字段加上一段类似于下面的Xml注释,可增强代码的可读性。
Mapped _disibledevent=>clip_image004clip_image003clip_image002信息化基础建设 改善代码生成代码生成器
但是,CodeSmith有个问题,就是一次只能生成一段代码,如果我需要为数据库Northwind中所有表(或是指定的表)生成接口和实现文件呢,dirty的办法可以多次的在CodeSmith的输入的表名,生成文件,一个表一个个的做代码生成,再加上同时生成Interface和Manager,10个表*2,工作量是20次,如果是100个表,工作量是100*2, 200次运动。
CodeSmith中有一个功能,就是可以直接调用它的API来运行代码生成,传入模板文件和必要的参数,调用代码就可以生成代码,而不必要运行CodeSmith软件本身。
顺着这个思路,我制作出如下的实用工具
clip_image006clip_image004clip_image003clip_image002信息化基础建设 改善代码生成代码生成器
这个工具的目的,就是克服CodeSmith一次不能批量工作的局限。如上图所示,打开一个服务器,选择数据库,左边自动列出它的表名,双击表名或是拖动表名到中间的Listbox中,这里面的表,是要进行代码生成的表,再看右边的选项区,Template列出了指定文件下的所有模板,也就是要进行代码生成的模板,Parameter区域列出选定模板的参数,我使用=号把值填写到后面,下面的TargetFolder是生成的文件放置的目录。
点击OK,一下次为这些表GBCURR Catalog DataSets Event History ModelDrill ModelPerspective Notifications
生成了所有的Template中列出的模板的文件。
表数量是8个,模板数据是7个,点击OK后,生成了7*8,56个文件,效率高。
事实上,在升级.Net Remoting为WCF时,我就是使用这个技巧,一下将所有的接口文件实现成WCF的标准接口。

Text to String

在做报表或是数据库操作时,通常需要在查询分析器中写好SQL,如下
SELECT
ItemID, Path, Name, ParentID, Type,
Content,
Intermediate, SnapshotDataID, LinkSourceID,
FROM dbo.Catalog
然后运用SQL拼接技术,写成下面的格式
string sql=" SELECT ItemID, Path, Name, ParentID, Type,"+
" Content, Intermediate, SnapshotDataID, LinkSourceID, "+
" FROM dbo.Catalog";
这个转换的步骤,容易出错,也枯燥。如果有大量的SQL要转化成C#,工作量会相当大。
由于掌握了代码生成技术 ,来看一下这个小程序
clip_image008clip_image006clip_image004clip_image003clip_image002信息化基础建设 改善代码生成代码生成器
把SQL拷贝到上面的窗格中,选择要生成的代码方法(C#或是VB),点Generate Code,
下面的窗格就写好我们需要的代码。
这个小技巧可以省很多拼凑SQL的时间,而你需要付出的,就是写一个不到10行的C#程序。
不可否认,SQL拼凑,在制作复杂的报表中还是相当有用的,复杂的报表要从大量的表中取数,运算,然后生成新的数据集,传送到报表中。用SQL拼凑做数据访问层,显然不是明智的决定,我以为。
Tags:  旺旺代码生成器 qq代码生成 动软代码生成器 旺旺代码生成 代码生成器

延伸阅读

最新评论

发表评论