Update pgsql subinsert datetime bug

This commit is contained in:
sunkaixuna 2021-10-17 13:36:35 +08:00
parent ade8fe0efb
commit 17142457ba
3 changed files with 17 additions and 2 deletions

View File

@ -71,7 +71,7 @@ namespace OrmTest
Id = 0, Id = 0,
Items = new List<OrderItem>() { Items = new List<OrderItem>() {
new OrderItem(){ new OrderItem(){
CreateTime=DateTime.Now,
OrderId=0, OrderId=0,
Price=1, Price=1,
ItemId=1 ItemId=1

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data.SqlTypes;
using System.Linq; using System.Linq;
using System.Linq.Expressions; using System.Linq.Expressions;
using System.Text; using System.Text;
@ -243,7 +244,16 @@ namespace SqlSugar
} }
else else
{ {
insertDictionary.Add(item.DbColumnName, item.PropertyInfo.GetValue(insetObject)); var value = item.PropertyInfo.GetValue(insetObject);
if (value == null&&this.Context.CurrentConnectionConfig.DbType==DbType.PostgreSQL)
{
var underType= UtilMethods.GetUnderType(item.PropertyInfo.PropertyType);
if (underType == UtilConstants.DateType)
{
value = SqlDateTime.Null;
}
}
insertDictionary.Add(item.DbColumnName, value);
} }
} }
return insertDictionary; return insertDictionary;

View File

@ -90,6 +90,11 @@ namespace SqlSugar
foreach (var parameter in parameters) foreach (var parameter in parameters)
{ {
if (parameter.Value == null) parameter.Value = DBNull.Value; if (parameter.Value == null) parameter.Value = DBNull.Value;
if(parameter.Value is System.Data.SqlTypes.SqlDateTime&&parameter.DbType==System.Data.DbType.AnsiString)
{
parameter.DbType = System.Data.DbType.DateTime;
parameter.Value = DBNull.Value;
}
var sqlParameter = new NpgsqlParameter(); var sqlParameter = new NpgsqlParameter();
sqlParameter.ParameterName = parameter.ParameterName; sqlParameter.ParameterName = parameter.ParameterName;
sqlParameter.Size = parameter.Size; sqlParameter.Size = parameter.Size;