天天看点

SubSonic3.0使用外连接查询时查询不出数据的问题修改

 今天在开发时,要使用到外连接查询,如图

  

SubSonic3.0使用外连接查询时查询不出数据的问题修改

  老是查不出数据,所以就追踪了一下代码,发现查询后生成的SQL语句变成了内连接了,真是晕

SubSonic3.0使用外连接查询时查询不出数据的问题修改

  然后继续Debug,发现原来SqlQuery类在调用LeftInnerJoin函数时传入的Join.JoinType.LeftInner参数,并没有被CreateJoin函数使用上,如下图

SubSonic3.0使用外连接查询时查询不出数据的问题修改

  所以赶快修改为type,见图

SubSonic3.0使用外连接查询时查询不出数据的问题修改

  心想应该可以了吧......继续执行程序,发现还是没有查询出数据来~~~真是郁闷......继续Debug,发现SQL语句还是有问题,见图

SubSonic3.0使用外连接查询时查询不出数据的问题修改

  语句中多了一个INNER,所以查询直接爆错退出了,继续跟踪Debug,但是找来找去都没有发现在哪里组合语句的,@_@

  认真研究了一下,发现是从Join类的GetJoinTypeValue函数返回连接字符串的,如下图

SubSonic3.0使用外连接查询时查询不出数据的问题修改

  就尝试修改了一下返回的字串,见图

SubSonic3.0使用外连接查询时查询不出数据的问题修改

  最后执行程序,生成的SQL语句终于正常了

SubSonic3.0使用外连接查询时查询不出数据的问题修改

  这个Bug其实并不是很复杂,只要多使用Debug跟踪,多尝试修改(就算改错了也无所谓),才能找出问题所在

    本文转自 AllEmpty 博客园博客,原文链接:http://www.cnblogs.com/EmptyFS/p/3335311.html,如需转载请自行联系原作者