达梦数据库使用是select中的常量报错, 但是Mysql是正常的 返回
TJCS can't convert string to decimal at SqlSugar.IDataReaderEntityBuilder`1.CheckType(List`1 invalidTypes, String bindProperyTypeName, String validPropertyType, String propertyName) at SqlSugar.IDataReaderEntityBuilder`1.BindMethod(ILGenerator generator, EntityColumnInfo columnInfo, Int32 ordinal) at SqlSugar.IDataReaderEntityBuilder`1.BindField(ILGenerator generator, LocalBuilder result, EntityColumnInfo columnInfo, String fieldName) at SqlSugar.IDataReaderEntityBuilder`1.CreateBuilder(Type type) at SqlSugar.DbBindAccessory.<>c__DisplayClass4_0`1.<GetEntityList>b__1() at SqlSugar.ReflectionInoCore`1.GetOrCreate(String cacheKey, Func`1 create) at SqlSugar.ReflectionInoCacheService.GetOrCreate[V](String cacheKey, Func`1 create, Int32 cacheDurationInSeconds) at SqlSugar.DbBindAccessory.GetEntityList[T](SqlSugarProvider context, IDataReader dataReader) at SqlSugar.DbBindProvider.DataReaderToList[T](Type type, IDataReader dataReader) at SqlSugar.QueryableProvider`1.GetData[TResult](Boolean isComplexModel, Type entityType, IDataReader dataReader) at SqlSugar.QueryableProvider`1.GetData[TResult](KeyValuePair`2 sqlObj) at SqlSugar.QueryableProvider`1._ToList[TResult]() at SqlSugar.QueryableProvider`1.ToList()
报错信息如上
= repository
.DbContext.<>()
.<>((, ) => .xx== .xx && .yy== .yy)
.(
(, ) =>
.(.zz))
.(
(, ) =>
{
a= .a,
b= .b,
TJCS = .TJCS,
c= .c,}
)
.();语句结构如上, 其中TJCS字段都定义为decimal, 且m.TJCS也是decimal类型, 经过调试在
IDataReaderEntityBuilder
中获取到的列信息都是VARCHAR

热忱回答(9)
-
fate sta VIP0
2026/3/18提供具体错误提示
0 回复 -
Mr.T VIP0
2026/3/18TJCS can't convert string to decimal 这个就是异常错误的提示信息
0 回复 -
Mr.T VIP0
2026/3/18我调试发现是这种在select中使用的变量在达梦数据库所返回的DataRecord中的列类型都是VARCHAR, 而不是对应字段的类型, 导致了这个异常
0 回复 -
fate sta VIP0
2026/3/18DataRecord 是基于达梦的驱动。处理的。
0 回复 -
fate sta VIP0
2026/3/18正常不会是varchar。你换成numer(18,6)类型试试
0 回复 -
Mr.T VIP0
2026/3/18SELECT "S"."C" AS "C" , :Const5 AS "D" , :Const6 AS "TJCS" FROM "S" Left JOIN "Z" ON (( "S"."X" = "Z"."X" ) AND ( "S"."DWFD" = "Z"."DWFD" )) WHERE (((("S"."L" IN ('0','1')) AND( "S"."A" = :A )) AND ( "S"."B" = :B )) AND ( "Z"."BH" IS NOT NULL )) AND ( "S"."ISDELETED" = :isdeleted4 ) Parameters: :A=2603188016, :B=1202, :isdeleted4=False, :Const5=2603188016, :Const6=212, :constant7=2026/3/18 17:30:41, :constant8=0, :constant9=2, :Const10=1202, :constant11=0, :constant12=0还是一样, 我怀疑是不是达梦驱动把这种sql语句中的常量都处理成字符串了
0 回复 -
Mr.T VIP0
2026/3/18能否升级使用 DM.DmProvider 这个nuget包
0 回复 -
Mr.T VIP0
2026/3/18我使用最新版的DM.Provider做了一个实验是可以从datareader或得正确的类型
0 回复 -
Mr.T VIP0
2026/3/19但是在sqlsugar的adoprovider断点所返回的datareader中使用GetFieldType 所返回的类型是string
0 回复