关于SubSonic3.0未处理InvalidOperationException异常(关键字TOP附近有语法错误)的处理

时间:2021-12-26 19:49:41

早上在测试程序时,使用了Top这个属性关于SubSonic3.0未处理InvalidOperationException异常(关键字TOP附近有语法错误)的处理,没想到马上抛出了个“未处理InvalidOperationException异常(关键字'TOP'附近有语法错误)”这个错误提示,见下图:

关于SubSonic3.0未处理InvalidOperationException异常(关键字TOP附近有语法错误)的处理

然后Debug一下,发现原来是TOP 100与后面的内容粘在一块了,如下图:

关于SubSonic3.0未处理InvalidOperationException异常(关键字TOP附近有语法错误)的处理

对插件代码做了修改后,还是同样的问题,再次跟踪得更深一点,看了一下最后生成的SQL,才发现原来是TOP的位置给放错了,我擦...

关于SubSonic3.0未处理InvalidOperationException异常(关键字TOP附近有语法错误)的处理

插件里设置TOP的文件和位置:
关于SubSonic3.0未处理InvalidOperationException异常(关键字TOP附近有语法错误)的处理

通过Debug,找到SQL生成模版,见下图:(注:{7}是我自己之前添加的,用来处理去重复(Distinct)用的)

关于SubSonic3.0未处理InvalidOperationException异常(关键字TOP附近有语法错误)的处理

在里面增加{8}这个参数(文件名:Sql2005Generator.cs)
关于SubSonic3.0未处理InvalidOperationException异常(关键字TOP附近有语法错误)的处理

然后修改这个文件的其他位置:(如图)

关于SubSonic3.0未处理InvalidOperationException异常(关键字TOP附近有语法错误)的处理

接着打开ANSISqlGenerator.cs,在里面添加GenerateTop()函数
关于SubSonic3.0未处理InvalidOperationException异常(关键字TOP附近有语法错误)的处理

找到GenerateCommandLine()函数,按图片注释掉设置TOP这一段代码
关于SubSonic3.0未处理InvalidOperationException异常(关键字TOP附近有语法错误)的处理

然后将插件重新生成一下就OK了

  本文章为原创内容,转载请保留下面信息。

  发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:SubSonic3.0学习群(327360708)或Email给我(1654937#qq.com),大家一起探讨,由于本人工作很繁忙,如果疑问请先留言,回复不及时也请谅解。

  想了解更多SubSonic3.0的相关问题,请观注博客:http://www.cnblogs.com/EmptyFS/