diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index 8db1f1de1..7f25f6404 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -419,6 +419,10 @@ namespace SqlSugar } return this; } + public ISugarQueryable WhereColumns(Dictionary dictionary) + { + return WhereColumns(new List> { dictionary }); + } public ISugarQueryable WhereColumns(List> list) { List conditionalModels = new List(); @@ -432,7 +436,7 @@ namespace SqlSugar { FieldName = item, ConditionalType = ConditionalType.Equal, - FieldValue = model[item].ObjToString(), + FieldValue = model[item]==null?"null" : model[item].ObjToString(), CSharpTypeName = model[item] == null ? null : model[item].GetType().Name })); i++; diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/SaveableProvider/Storageable.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/SaveableProvider/Storageable.cs index 6fc5b1447..a63ba06c8 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/SaveableProvider/Storageable.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/SaveableProvider/Storageable.cs @@ -331,7 +331,7 @@ namespace SqlSugar FieldName = item.DbColumnName, ConditionalType = ConditionalType.Equal, CSharpTypeName=UtilMethods.GetTypeName(value), - FieldValue = value + "", + FieldValue = value==null?"null":value.ObjToString(), FieldValueConvertFunc=this.Context.CurrentConnectionConfig.DbType==DbType.PostgreSQL? UtilMethods.GetTypeConvert(value):null })); diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs index 5a3fcf213..38afa76d9 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/SqlBuilderProvider/SqlBuilderProvider.cs @@ -164,8 +164,19 @@ namespace SqlSugar switch (item.ConditionalType) { case ConditionalType.Equal: - builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "=", parameterName); - parameters.Add(new SugarParameter(parameterName, GetFieldValue(item))); + if (item.FieldValue!=null&&item.FieldValue == "null"&&item.FieldValue!= "[null]") + { + builder.AppendFormat($" {item.FieldName.ToSqlFilter()} is null "); + } + else + { + if (item.FieldValue == "[null]") + { + item.FieldValue = "null"; + } + builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "=", parameterName); + parameters.Add(new SugarParameter(parameterName, GetFieldValue(item))); + } break; case ConditionalType.Like: builder.AppendFormat(temp, type, item.FieldName.ToSqlFilter(), "LIKE", parameterName); diff --git a/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs b/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs index 2ce043c6e..d95f989e5 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); ISugarQueryable TranLock(DbLockType LockType = DbLockType.Wait); ISugarQueryable Where(Expression> expression); ISugarQueryable Where(string whereString, object parameters = null); diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlBlukCopy.cs b/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlBlukCopy.cs index 9312542c9..dcc087196 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlBlukCopy.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlBlukCopy.cs @@ -176,6 +176,10 @@ namespace SqlSugar { sb.Append(row[colum].ObjToDate().ToString("yyyy-MM-dd HH:mm:ss.fff")); } + else if (colum.DataType == UtilConstants.DateType && row[colum] != null && row[colum] == DBNull.Value) + { + sb.Append("NULL"); + } else sb.Append(row[colum].ToString()); } sb.AppendLine();