mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	@@ -1,7 +1,7 @@
 | 
			
		||||
<Project Sdk="Microsoft.NET.Sdk">
 | 
			
		||||
 | 
			
		||||
	<PropertyGroup>
 | 
			
		||||
		<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>
 | 
			
		||||
		<TargetFrameworks>net8.0;net7.0;net6.0;netstandard2.0;net461</TargetFrameworks>
 | 
			
		||||
		<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
 | 
			
		||||
		<Authors>FreeSql;ncc;YeXiangQin</Authors>
 | 
			
		||||
		<Description>FreeSql 数据库实现,基于 人大金仓数据库 V008R003/V008R006 Ado.Net (Kdbndp)</Description>
 | 
			
		||||
@@ -50,5 +50,8 @@
 | 
			
		||||
	<PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.0'">
 | 
			
		||||
		<DefineConstants>ns20;netstandard20</DefineConstants>
 | 
			
		||||
	</PropertyGroup>
 | 
			
		||||
	<PropertyGroup Condition="'$(TargetFramework)' == 'net8.0' or '$(TargetFramework)' == 'net7.0' or '$(TargetFramework)' == 'net6.0'">
 | 
			
		||||
		<DefineConstants>net60</DefineConstants>
 | 
			
		||||
	</PropertyGroup>
 | 
			
		||||
 | 
			
		||||
</Project>
 | 
			
		||||
 
 | 
			
		||||
@@ -72,7 +72,7 @@ namespace FreeSql.KingbaseES
 | 
			
		||||
            else if (param is TimeOnly || param is TimeOnly?)
 | 
			
		||||
            {
 | 
			
		||||
                var ts = (TimeOnly)param;
 | 
			
		||||
                return $"'{ts.Hour}:{ts.Minute}:{ts.Second}.{ts.Millisecond}'";
 | 
			
		||||
                return $"'{ts.Hour}:{ts.Minute}:{ts.Second}'";
 | 
			
		||||
            }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@ namespace FreeSql.KingbaseES
 | 
			
		||||
                { typeof(DateTime).FullName, CsToDb.New(KdbndpDbType.Timestamp, "timestamp", "timestamp NOT NULL", false, false, new DateTime(1970,1,1)) },{ typeof(DateTime?).FullName, CsToDb.New(KdbndpDbType.Timestamp, "timestamp", "timestamp", false, true, null) },
 | 
			
		||||
 | 
			
		||||
#if net60
 | 
			
		||||
                { typeof(TimeOnly).FullName, CsToDb.New(KdbndpDbType.Time, "time", "time NOT NULL", false, false, 0) },{ typeof(TimeOnly?).FullName, CsToDb.New(KdbndpDbType.Time, "time", "time", false, true, null) },
 | 
			
		||||
                { typeof(TimeOnly).FullName, CsToDb.New(KdbndpDbType.Time, "time", "time NOT NULL", false, false, TimeOnly.MinValue) },{ typeof(TimeOnly?).FullName, CsToDb.New(KdbndpDbType.Time, "time", "time", false, true, null) },
 | 
			
		||||
                { typeof(DateOnly).FullName, CsToDb.New(KdbndpDbType.Date, "date", "date NOT NULL", false, false, new DateTime(1970,1,1)) },{ typeof(DateOnly?).FullName, CsToDb.New(KdbndpDbType.Date, "date", "date", false, true, null) },
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,10 @@ namespace FreeSql.KingbaseES
 | 
			
		||||
        {
 | 
			
		||||
            if (Interlocked.Exchange(ref _firstInit, 0) == 1) //不能放在 static ctor .NetFramework 可能报初始化类型错误
 | 
			
		||||
            {
 | 
			
		||||
#if net60
 | 
			
		||||
                Utils.dicExecuteArrayRowReadClassOrTuple[typeof(DateOnly)] = true;
 | 
			
		||||
                Utils.dicExecuteArrayRowReadClassOrTuple[typeof(TimeOnly)] = true;
 | 
			
		||||
#endif
 | 
			
		||||
                Utils.dicExecuteArrayRowReadClassOrTuple[typeof(BigInteger)] = true;
 | 
			
		||||
                Utils.dicExecuteArrayRowReadClassOrTuple[typeof(BitArray)] = true;
 | 
			
		||||
                Utils.dicExecuteArrayRowReadClassOrTuple[typeof(KdbndpPoint)] = true;
 | 
			
		||||
 
 | 
			
		||||
@@ -67,6 +67,12 @@ namespace FreeSql.KingbaseES
 | 
			
		||||
            } },
 | 
			
		||||
            { typeof((IPAddress Address, int Subnet)[]).FullName, a => getParamterArrayValue(typeof((IPAddress Address, int Subnet)), a, (IPAddress.Any, 0)) },
 | 
			
		||||
            { typeof((IPAddress Address, int Subnet)?[]).FullName, a => getParamterArrayValue(typeof((IPAddress Address, int Subnet)?), a, null) },
 | 
			
		||||
#if net60
 | 
			
		||||
            { typeof(DateOnly[]).FullName, a => getParamterArrayValue(typeof(DateTime), a, null) },
 | 
			
		||||
            { typeof(DateOnly?[]).FullName, a => getParamterArrayValue(typeof(DateTime?), a, null) },
 | 
			
		||||
            { typeof(TimeOnly[]).FullName, a => getParamterArrayValue(typeof(TimeSpan), a, null) },
 | 
			
		||||
            { typeof(TimeOnly?[]).FullName, a => getParamterArrayValue(typeof(TimeSpan?), a, null) },
 | 
			
		||||
#endif
 | 
			
		||||
        };
 | 
			
		||||
        static object getParamterValue(Type type, object value, int level = 0)
 | 
			
		||||
        {
 | 
			
		||||
@@ -85,6 +91,10 @@ namespace FreeSql.KingbaseES
 | 
			
		||||
            }
 | 
			
		||||
            if (type.IsNullableType()) type = type.GenericTypeArguments.First();
 | 
			
		||||
            if (type.IsEnum) return (int)value;
 | 
			
		||||
#if net60
 | 
			
		||||
            if (type == typeof(DateOnly)) return ((DateOnly)value).ToDateTime(TimeOnly.MinValue);
 | 
			
		||||
            if (type == typeof(TimeOnly)) return ((TimeOnly)value).ToTimeSpan();
 | 
			
		||||
#endif
 | 
			
		||||
            if (dicGetParamterValue.TryGetValue(type.FullName, out var trydic)) return trydic(value);
 | 
			
		||||
            return value;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user