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);