关于SubSonic3.0插件使用SqlQuery或Select查询时产生的System.NullReferenceException异常修复_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 关于SubSonic3.0插件使用SqlQuery或Select查询时产生的System.NullReferenceException异常修复

关于SubSonic3.0插件使用SqlQuery或Select查询时产生的System.NullReferenceException异常修复

 2014/4/16 11:57:03  AllEmpty  博客园  我要评论(0)
  • 摘要:早上在编写执行用例时,突然爆异常System.NullReferenceException:未将对象引用设置到对象的实例执行代码:未将对象引用设置到对象的实例。说明:执行当前Web请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息:System.NullReferenceException:未将对象引用设置到对象的实例。源错误:行168:foreach(Constraintconstraininc)行169:{行170
  • 标签:system 使用 插件 SQL 修复 异常

  早上在编写执行用例时,突然爆异常System.NullReferenceException: 未将对象引用设置到对象的实例

  执行代码:

  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" alt="" />

  

未将对象引用设置到对象的实例。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:

行 168:            foreach(Constraint constrain in c)
行 169:            {
行 170:                IColumn column = _provider.FindTable(typeof(T).Name).GetColumnByPropertyName(constrain.ColumnName);
行 171:                constrain.ColumnName = column.Name;
行 172:                constrain.ConstructionFragment = column.Name;


源文件: E:\Asp.net\******\SubSonic.Core\Query\SqlQuery.cs    行: 170

堆栈跟踪:

[NullReferenceException: 未将对象引用设置到对象的实例。]
   SubSonic.Query.SqlQuery.Where(Expression`1 expression) in E:\Asp.net\******\SubSonic.Core\Query\SqlQuery.cs:170
   SubSonicTest.Test.Page_Load(Object sender, EventArgs e) in E:\Asp.net\******\SubSonicTest\Test.aspx.cs:19
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
   System.Web.UI.Control.OnLoad(EventArgs e) +92
   System.Web.UI.Control.LoadRecursive() +54
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772

  

  通过Debug追踪后,发现SqlQuery类的条件添加函数中,在执行通过反射获取泛型类后,查找条件列名并为条件列赋值时,由于没有找到该列而产生的异常

  对此进行相应修改,添加判断,为null时创建泛型对应的表实体,修改如下:

  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" alt="" />

  

class="code_img_closed" src="/Upload/Images/2014041611/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('3db2320f-61f5-4585-ab80-3919e932edb9',event)" src="/Upload/Images/2014041611/2B1B950FA3DF188F.gif" alt="" />
public SqlQuery Where<T>(Expression<Func<T, bool>> expression) where T : new()
        {
            //ExpressionParser parser = new ExpressionParser();
            IList<Constraint> c = expression.ParseConstraints();
            /*
            * 修 改 人:Empty(AllEmpty)
            * QQ    群:327360708
            * 博客地址:http://www.cnblogs.com/EmptyFS/
            * 修改时间:2014-04-16
            * 修改说明:在使用SqlQuery或Select查询时,由于_provider(即DbDataProvider)的Schema.Tables为null,执行FindTable时直接返回null值,
             *          获取IColumn也是null值,所以使用获取的IColumn对相关变量进行赋值时就会产生System.NullReferenceException异常
            * 异常信息:System.NullReferenceException: 未将对象引用设置到对象的实例。
            *********************************************/
            //获取当前泛型对应的Table
            var iTable = _provider.FindTable(typeof (T).Name);
            //如果为null,则创建它
            if (iTable == null)
            {
                iTable = _provider.FindOrCreateTable<T>();
            }

            foreach(Constraint constrain in c)
            {
                //IColumn column = _provider.FindTable(typeof (T).Name).GetColumnByPropertyName(constrain.ColumnName);      //版本代码
                IColumn column = iTable.GetColumnByPropertyName(constrain.ColumnName);
                constrain.ColumnName = column.Name;
                constrain.ConstructionFragment = column.Name;
                constrain.DbType = column.DataType;
                constrain.ParameterName = column.ParameterName;
                constrain.QualifiedColumnName = column.QualifiedName;
                constrain.TableName = column.Table.Name;
                Constraints.Add(constrain);
            }

            return this;
        }
View Code

 

  

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

 

 版权声明:

  本文由AllEmpty原创并发布于博客园,欢迎转载,未经本人同意必须保留此段声明(否则保留追究责任的权利),且在文章页面明显位置给出原文链接,如有问题,可以通过1654937@qq.com 联系我,非常感谢。

  发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:327360708 或Email给我(1654937@qq.com),大家一起探讨。

  更多内容,敬请观注博客:http://www.cnblogs.com/EmptyFS/

 

 

发表评论
用户名: 匿名