ODP 使用 ArrayBind 时可能会遇到的巨坑 'System.IConvertib
Unable to cast object of type ‘System.Nullable`1[System.Int16][]‘ to type ‘System.IConvertible‘ ? 一段代码99%不会出错,0.1%会报上边的错,debug费了老鼻子时间,发现此坑很深。异常是?cmd.ExecuteNonQuery() 抛的,实际是?para.Value = list.Select(d => d.ID).ToArray() 引起的,但是此句实在是没毛病啊!。。。。。。。。哪?。。。。。。。。而最终原因是数据源数量为0,list.Count=0。list.Count=0的情况下,用?ArrayBind 实际本无意义了,所以解决方案是加上行判断if(list.Count>0)。 而99%不报错是99%的情况下数据不为空。 ? var q = from d in db.tbl? select d; var list = q.ToList(); if(list.Count>0)? ? ?//如果数据集为空还执行,会报 ...‘System.IConvertible‘ 的异常 cmd.ArrayBindCount = list.Count(); var para = new Oracle.ManagedDataAccess.Client.OracleParameter(); cmd.ExecuteNonQuery();} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |