关于SubSonic3.0插件使用SubSonic.Query.Select查询时,字段类型为tinyint时列丢失问题的Bug修复

时间:2022-01-16 20:19:10

  下午在写代码时,突然发现一个列名为Enable的字段怎么也查询不出来,开始以为可能这个名称是关键字,所以给过滤掉了,所以就将名称修改为IsEnable,问题还是一样......将名称又改为IsEnables和IsPost结果还是查询不出来......

  所以开启了DeBug调试,逐步跟踪程序在SubSonic3.0插件中的执行情况,发现在一开始时,这个字段是读取出来了,但莫明其妙的不见了,反复跟踪了好几次后才发现,是因为这个字段类型为tinyint时,在C#中是转为byte类型的,而插件在添加查询显示列时,由于插件源码中对于类型过滤函数的判断中,只存在byt[]类型的判断,而不存在byte,所以给判断为不合法类型,给过滤掉了,这种情况应该是发生在使用SubSonic.Query.Select和SubSonic.Query.SqlQuery查询时才会发生,其他的查询暂时没有发现这种情况。

  具体请看图:

  关于SubSonic3.0插件使用SubSonic.Query.Select查询时,字段类型为tinyint时列丢失问题的Bug修复

  所以只需要并byte加上就可以,如下图:

  关于SubSonic3.0插件使用SubSonic.Query.Select查询时,字段类型为tinyint时列丢失问题的Bug修复

  

  添加完以上代码后,将SubSonic3.0插件源码重新生成一下就可以正常使用了。

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

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

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