diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/CodeFirstProvider/TableDifferenceProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/CodeFirstProvider/TableDifferenceProvider.cs index 823ab625f..753c45c41 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/CodeFirstProvider/TableDifferenceProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/CodeFirstProvider/TableDifferenceProvider.cs @@ -58,6 +58,8 @@ namespace SqlSugar foreach (var tableInfo in tableInfos) { TableDifferenceInfo addItem = new TableDifferenceInfo(); + if (tableInfo.OldTableInfo == null) + tableInfo.OldTableInfo = new DbTableInfo(); addItem.TableName = tableInfo.OldTableInfo.Name; addItem.AddColums = GetAddColumn(tableInfo); addItem.UpdateColums = GetUpdateColumn(tableInfo); diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/DeleteProvider/LogicDeleteProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/DeleteProvider/LogicDeleteProvider.cs index 05d46a1fa..a8c677530 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/DeleteProvider/LogicDeleteProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/DeleteProvider/LogicDeleteProvider.cs @@ -31,6 +31,36 @@ namespace SqlSugar var result = updateable.Where(where).ExecuteCommand(); return result; } + public int ExecuteCommand(string LogicFieldName, object deleteValue, string deleteTimeFieldName,string userNameFieldName,object userNameValue) + { + ISqlSugarClient db; + List pars; + string where; + LogicFieldName = _ExecuteCommand(LogicFieldName, out db, out where, out pars); + var updateable = db.Updateable().SetColumns(LogicFieldName, deleteValue); + updateable.SetColumns(deleteTimeFieldName, DateTime.Now); + updateable.SetColumns(userNameFieldName,userNameValue); + if (pars != null) + updateable.UpdateBuilder.Parameters.AddRange(pars); + Convert(updateable as UpdateableProvider); + var result = updateable.Where(where).ExecuteCommand(); + return result; + } + public async Task ExecuteCommandAsync(string LogicFieldName, object deleteValue, string deleteTimeFieldName, string userNameFieldName, object userNameValue) + { + ISqlSugarClient db; + List pars; + string where; + LogicFieldName = _ExecuteCommand(LogicFieldName, out db, out where, out pars); + var updateable = db.Updateable().SetColumns(LogicFieldName, deleteValue); + updateable.SetColumns(deleteTimeFieldName, DateTime.Now); + updateable.SetColumns(userNameFieldName, userNameValue); + if (pars != null) + updateable.UpdateBuilder.Parameters.AddRange(pars); + Convert(updateable as UpdateableProvider); + var result =await updateable.Where(where).ExecuteCommandAsync(); + return result; + } public async Task ExecuteCommandAsync(string LogicFieldName = null, object deleteValue = null, string deleteTimeFieldName = null) { ISqlSugarClient db; diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 7f25f6404..be146509a 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -423,6 +423,25 @@ namespace SqlSugar { return WhereColumns(new List> { dictionary }); } + public ISugarQueryable WhereColumns(Dictionary columns, bool ignoreDefaultValue) + { + if (ignoreDefaultValue == false || columns == null) + { + return WhereColumns(columns); + } + else + { + var newColumns = new Dictionary(); + foreach (var item in columns) + { + if (!UtilMethods.IsDefaultValue(item.Value)) + { + newColumns.Add(item.Key, item.Value); + } + } + return WhereColumns(newColumns); + } + } public ISugarQueryable WhereColumns(List> list) { List conditionalModels = new List(); diff --git a/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs b/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs index d95f989e5..2acdbc538 100644 --- a/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs @@ -54,6 +54,7 @@ namespace SqlSugar ISugarQueryable WhereClassByPrimaryKey(List list); ISugarQueryable WhereClassByPrimaryKey(T data) ; ISugarQueryable WhereColumns(List> columns); + ISugarQueryable WhereColumns(Dictionary columns, bool ignoreDefaultValue); ISugarQueryable WhereColumns(Dictionary columns); ISugarQueryable TranLock(DbLockType LockType = DbLockType.Wait); ISugarQueryable Where(Expression> expression); diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs b/Src/Asp.NetCore2/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs index 41ac202f6..8beecd478 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs @@ -153,6 +153,10 @@ namespace SqlSugar { sqlParameter.DbType = System.Data.DbType.AnsiString; } + else if (sqlParameter.Value is DateTime && sqlParameter.DbType == System.Data.DbType.AnsiString) + { + sqlParameter.DbType = System.Data.DbType.DateTime; + } ++index; } return result; diff --git a/Src/Asp.NetCore2/SqlSugar/SqlSugar.csproj b/Src/Asp.NetCore2/SqlSugar/SqlSugar.csproj index 80d278940..489970460 100644 --- a/Src/Asp.NetCore2/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.NetCore2/SqlSugar/SqlSugar.csproj @@ -14,11 +14,8 @@ - - - diff --git a/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs b/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs index 365f6fc22..196885c6b 100644 --- a/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs +++ b/Src/Asp.NetCore2/SqlSugar/Utilities/UtilMethods.cs @@ -17,6 +17,12 @@ namespace SqlSugar public class UtilMethods { + internal static bool IsDefaultValue(object value) + { + if (value == null) return true; + return value.Equals(UtilMethods.GetDefaultValue(value.GetType())); + } + internal static DateTime ConvertFromDateTimeOffset(DateTimeOffset dateTime) { if (dateTime.Offset.Equals(TimeSpan.Zero))