ESQL 查询数据报 参数类型“Edm.Decimal”和“Edm.Double”不兼容

ESQL查询兼容性问题
本文解决了ESQL查询中因参数类型“Edm.Decimal”与“Edm.Double”不兼容而导致的问题。通过将double类型的参数转换为decimal类型,成功避免了类型不匹配的错误。

ESQL 查询数据报 参数类型“Edm.Decimal”和“Edm.Double”不兼容

 

System.Data.Entity.Core.Objects.ObjectQuery<TEntity> objectquery = objectContext.CreateQuery<TEntity>(ESQL);

使用ESQL 的ObjectQuery查询对象的方法CreateQuery查询数据时,老是报“参数类型“Edm.Decimal”和“Edm.Double”不兼容”,查询许久,发现中文资料太少了,分析问题应该是在esql中查询条件在double转decimal是不兼容报错,在esql中传入的参数在组织esql语句的时候小数是当做double处理的,我们的字段类型是decimal,导致此错误发生,最终在IBM Knowledge Center找到了答案,地址:https://www.ibm.com/support/knowledgecenter/SSMKHH_9.0.0/com.ibm.etools.mft.doc/ak05610_.htm

然后我的解决方案如下:

在组织esql转成decimal

string.Format(“{0} >= {1}”, Amount, "CAST(0.01 AS System.Decimal(23,2))");

至此问题解决,

注意:在转换时,int 转decimal等不受影响,整形可以不用转换,为了考虑性能可以做一个判断,仅转换double类型等

System.Data.Entity.Core.Objects.ObjectQuery<TEntity> objectquery = objectContext.CreateQuery<TEntity>(ESQL);

转载于:https://www.cnblogs.com/ching2009/p/7986726.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值