有同学说,NCodeGenerate是不错,功能也很强大,美中不足的调试功能太弱,要是有单步执行,设置断点,查看变量,最好象Visual Studio一样的调试功能就完美了。我说:”同学你要求也太高了吧。“。但是仔细想想,既然NCodeGenerate使用的是Razor模板引擎,最终是生成C#代码来执行的,为什么不可以用Visual Studio来调试呢。好吧,想到就做。功夫不负有心人,经过艰苦卓绝的折腾,终于成功了!噢耶!
废话不多说,上图片:
新建模板,输入以下代码:
@model DynamicCodeGenerate.myModel
@{
int i=0;
Debugger.Launch();
Debugger.Break();
NTrace.WriteLine("Begin");
foreach(var item in Model.DataBase.Tables){
@:TableName:@item.Name
foreach(var itemcolumn in item.Columns)
{
@:Column:@itemcolumn.Name
}
i++;
}
}
在上面的代码中,
Debugger.Launch();
Debugger.Break();
这两句十分重要,Debugger.Launch(); 是启动调试器,必须的。如果没有这一句代码的话,也会调出调试器,但是调试结束,分离进程后,控制权不能交还给NCodeGenerate,NCodeGenerate将永远处于不响应状态。如果你提前启动调试器,并附加到NCodeGenerate的话,就不需要了。不管是那种情况, Debugger.Launch() 这一句代码都没有负作用,所以就输上去吧。
Debugger.Break(); 是告诉调试器,在这里有个断点,停下来等你的指令。
选择好数据源执行,弹出如下对话框:
选择“是”。精彩部分来了。
熟悉调试器出来了,显示出了NCodeGenerate 生成的C#代码。好了下面的事情我就不用说了,你可以在这里设置断点,单步执行,查看变量。
NCodeGenerate完全暴露了,所有的代码都展现在你的面前,一切尽在掌控之中。
今天就讲到这里,下一篇会将一下Razor 模板引擎生成的代码的原理和结构,敬请关注。
附: NCodeGenerate 新增了 NCodeGenerate.DBSchema 的文档,在下面的文档连接中。
附上下载地址:
文档:文档
NCodeGenerate 系列文章:
一、代码生成利器-NCodeGenerate 是什么?
二、代码生成利器-NCodeGenerate 教程(1) 遍历数据库内的所有表
三、代码生成利器-NCodeGenerate 教程(2) NCodeGenerate的代码公用之一
四、代码生成利器-NCodeGenerate 教程(3) 生成代码到文件.
五、 代码生成利器-NCodeGenerate 教程(4) CodeSmith模板转换
六、代码生成利器-NCodeGenerate 教程(5) 多种数据库的支持