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

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);
posted @ 2017-12-05 14:19  ching126  阅读(243)  评论(0编辑  收藏  举报
一个小小的平凡的事情坚持10年,回头看看,你会收获惊喜;坚持20年,回头看看,你的命运已经发生质的蜕变;坚持30年甚至更多年,回头看看,你的人生已经发生惊天动地的变化。