oracle NUMBER(1) 与 c# bool 的奇葩问题

最近公司的一个项目,在本地调试都ok,但一发布到测试环境就报异常:

MessageText=System.ArgumentException: Value does not fall within the expected range.
at Oracle.DataAccess.Client.OracleParameter.set_Value(Object value)
at IBatisNet.DataMapper.TypeHandlers.Nullables.NullableBooleanTypeHandler.SetParameter(IDataParameter dataParameter, Object parameterValue, String dbType)
at IBatisNet.DataMapper.Configuration.ParameterMapping.ParameterMap.SetParameter(ParameterProperty mapping, IDataParameter dataParameter, Object parameterValue)
at IBatisNet.DataMapper.Commands.DefaultPreparedCommand.ApplyParameterMap(ISqlMapSession session, IDbCommand command, RequestScope request, IStatement statement, Object parameterObject)
at IBatisNet.DataMapper.Commands.DefaultPreparedCommand.Create(RequestScope request, ISqlMapSession session, IStatement statement, Object parameterObject)
at IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteInsert(ISqlMapSession session, Object parameterObject)
at IBatisNet.DataMapper.SqlMapper.Insert(String statementName, Object parameterObject)
at Framework.Zhaogang.Data.DbContext.Insert(String statementName, Object parameterObject)
at Framework.Zhaogang.Data.Dao`1.Insert(TEntity entity)
at Feature.Zhaogang.Settlement.Application.Biz.CostaccountingBiz.AddFinInStorageAndItems(List`1 finInStorageEntityList, String& msg, List`1& idCodeResultList)

经过一步步排查,最后确定是 代码的实体中用了bool值,但oracle用的是NUMBER(1) 导致的。而本地和测试服务器配置文件中用的oracle驱动版本不同,一个4.0,一个11.2,结果是本地api功能ok,服务器api异常。

最后把bool型的属性都改为long才解决的。

转载于:https://www.cnblogs.com/junblog/p/4398303.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值