From d58de6b9c3577cceb6b890c9ab2a07cbb12e8114 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Wed, 8 May 2024 18:17:49 +0800 Subject: [PATCH] odbc emit --- .../IDataReaderEntityBuilder.cs | 4 ++++ .../DbBindProvider/IDataRecordExtensions.cs | 22 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs index 7535315d8..a5d27ee11 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs @@ -68,6 +68,8 @@ namespace SqlSugar private static readonly MethodInfo getJson = typeof(IDataRecordExtensions).GetMethod("GetJson"); private static readonly MethodInfo getArray = typeof(IDataRecordExtensions).GetMethod("GetArray"); private static readonly MethodInfo getEntity = typeof(IDataRecordExtensions).GetMethod("GetEntity", new Type[] { typeof(SqlSugarProvider) }); + private static readonly MethodInfo getMyIntNull = typeof(IDataRecordExtensions).GetMethod("GetMyIntNull"); + private static readonly MethodInfo getMyInt= typeof(IDataRecordExtensions).GetMethod("GetMyInt"); private delegate T Load(IDataRecord dataRecord); private Load handler; @@ -359,6 +361,8 @@ namespace SqlSugar method = isNullableType ? getConvertInt16 : getInt16; if (bindProperyTypeName == "uint32"&&this.Context.CurrentConnectionConfig.DbType.IsIn(DbType.MySql,DbType.MySqlConnector)) method = null; + if (this.Context.CurrentConnectionConfig.DbType == DbType.OceanBaseForOracle) + method = isNullableType ? getMyIntNull : getMyInt; break; case CSharpDataType.@bool: if (bindProperyTypeName == "bool" || bindProperyTypeName == "boolean") diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/DbBindProvider/IDataRecordExtensions.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/DbBindProvider/IDataRecordExtensions.cs index db9753f40..32d9973c0 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/DbBindProvider/IDataRecordExtensions.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/DbBindProvider/IDataRecordExtensions.cs @@ -133,6 +133,28 @@ namespace SqlSugar var result = dr.GetInt16(i); return result; } + public static Int32? GetMyIntNull(this IDataRecord dr, int i) + { + if (dr.IsDBNull(i)) + { + return null; + } + if (dr.GetDataTypeName(i) == "NUMBER") + { + return Convert.ToInt32(dr.GetDouble(i)); + } + var result = dr.GetInt32(i); + return result; + } + public static Int32 GetMyInt(this IDataRecord dr, int i) + { + if (dr.GetDataTypeName(i) == "NUMBER") + { + return Convert.ToInt32(dr.GetDouble(i)); + } + var result = dr.GetInt32(i); + return result; + } public static Int32? GetConvertInt32(this IDataRecord dr, int i) {