diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index ae3b3895b..4eaf5d379 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -645,7 +645,11 @@ namespace SqlSugar this.Where(whereString, whereObj); return this; } - + public virtual ISugarQueryable Where(IFuncModel funcModel) + { + var obj= this.SqlBuilder.FuncModelToSql(funcModel); + return this.Where(obj.Key, obj.Value); + } public virtual ISugarQueryable Where(List conditionalModels) { if (conditionalModels.IsNullOrEmpty()) return this; @@ -3626,7 +3630,11 @@ namespace SqlSugar base.Where(conditionalModels); return this; } - + public new ISugarQueryable Where(IFuncModel funcModel) + { + var obj = this.SqlBuilder.FuncModelToSql(funcModel); + return this.Where(obj.Key, obj.Value); + } public new ISugarQueryable WhereIF(bool isWhere, string whereString, object whereObj) { if (!isWhere) return this; @@ -4233,7 +4241,11 @@ namespace SqlSugar base.Where(conditionalModels); return this; } - + public new ISugarQueryable Where(IFuncModel funcModel) + { + var obj = this.SqlBuilder.FuncModelToSql(funcModel); + return this.Where(obj.Key, obj.Value); + } public ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) @@ -4619,7 +4631,11 @@ namespace SqlSugar base.Where(conditionalModels); return this; } - + public new ISugarQueryable Where(IFuncModel funcModel) + { + var obj = this.SqlBuilder.FuncModelToSql(funcModel); + return this.Where(obj.Key, obj.Value); + } public new ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) @@ -5229,7 +5245,11 @@ namespace SqlSugar base.Where(conditionalModels); return this; } - + public new ISugarQueryable Where(IFuncModel funcModel) + { + var obj = this.SqlBuilder.FuncModelToSql(funcModel); + return this.Where(obj.Key, obj.Value); + } public new ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) @@ -5778,7 +5798,11 @@ namespace SqlSugar base.Where(conditionalModels); return this; } - + public new ISugarQueryable Where(IFuncModel funcModel) + { + var obj = this.SqlBuilder.FuncModelToSql(funcModel); + return this.Where(obj.Key, obj.Value); + } public new ISugarQueryable WhereIF(bool isWhere, Expression> expression) { if (isWhere) diff --git a/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs b/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs index 3ec459521..ee955aa93 100644 --- a/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs +++ b/Src/Asp.NetCore2/SqlSugar/Interface/IQueryable.cs @@ -61,6 +61,7 @@ namespace SqlSugar ISugarQueryable TranLock(DbLockType? LockType = DbLockType.Wait); ISugarQueryable Where(Expression> expression); ISugarQueryable Where(string whereString, object parameters = null); + ISugarQueryable Where(IFuncModel funcModel); ISugarQueryable Where(List conditionalModels); ISugarQueryable Where(List conditionalModels,bool isWrap); ISugarQueryable Where(string fieldName, string conditionalType, object fieldValue); @@ -220,6 +221,7 @@ namespace SqlSugar new ISugarQueryable Where(Expression> expression); ISugarQueryable Where(Expression> expression); new ISugarQueryable Where(List conditionalModels); + new ISugarQueryable Where(IFuncModel funcModel); new ISugarQueryable WhereIF(bool isWhere, Expression> expression); ISugarQueryable WhereIF(bool isWhere, Expression> expression); @@ -319,7 +321,7 @@ namespace SqlSugar ISugarQueryable Where(Expression> expression); ISugarQueryable Where(Expression> expression); new ISugarQueryable Where(List conditionalModels); - + new ISugarQueryable Where(IFuncModel funcModel); new ISugarQueryable WhereIF(bool isWhere, Expression> expression); ISugarQueryable WhereIF(bool isWhere, Expression> expression); ISugarQueryable WhereIF(bool isWhere, Expression> expression); @@ -434,7 +436,7 @@ namespace SqlSugar ISugarQueryable Where(Expression> expression); ISugarQueryable Where(Expression> expression); new ISugarQueryable Where(List conditionalModels); - + new ISugarQueryable Where(IFuncModel funcModel); new ISugarQueryable WhereIF(bool isWhere, Expression> expression); ISugarQueryable WhereIF(bool isWhere, Expression> expression); ISugarQueryable WhereIF(bool isWhere, Expression> expression); @@ -560,7 +562,7 @@ namespace SqlSugar ISugarQueryable Where(Expression> expression); new ISugarQueryable Where(List conditionalModels); - + new ISugarQueryable Where(IFuncModel funcModel); new ISugarQueryable WhereIF(bool isWhere, Expression> expression); ISugarQueryable WhereIF(bool isWhere, Expression> expression); ISugarQueryable WhereIF(bool isWhere, Expression> expression); @@ -678,7 +680,7 @@ namespace SqlSugar ISugarQueryable Where(Expression> expression); ISugarQueryable Where(Expression> expression); new ISugarQueryable Where(List conditionalModels); - + new ISugarQueryable Where(IFuncModel funcModel); new ISugarQueryable WhereIF(bool isWhere, Expression> expression); ISugarQueryable WhereIF(bool isWhere, Expression> expression); ISugarQueryable WhereIF(bool isWhere, Expression> expression); diff --git a/Src/Asp.NetCore2/SqlSugar/Json2Sql/ModelToSql/SqlPart.cs b/Src/Asp.NetCore2/SqlSugar/Json2Sql/ModelToSql/SqlPart.cs index 153ed3b09..3073b3b2a 100644 --- a/Src/Asp.NetCore2/SqlSugar/Json2Sql/ModelToSql/SqlPart.cs +++ b/Src/Asp.NetCore2/SqlSugar/Json2Sql/ModelToSql/SqlPart.cs @@ -8,7 +8,7 @@ namespace SqlSugar public abstract partial class SqlBuilderProvider : SqlBuilderAccessory, ISqlBuilder { #region Variable - private string[] SqlSplicingOperator = new string[] { ">", ">=", "<", "<=", "(", ")", "=", "||", "&&","&","|" }; + private string[] SqlSplicingOperator = new string[] { ">", ">=", "<", "<=", "(", ")", "=", "||", "&&","&","|","null","is","isnot" }; #endregion #region Root @@ -44,8 +44,8 @@ namespace SqlSugar private static string GetSqlSplicingOperator(object value) { var result= value.ObjToString(); - if (result == "||") return "AND"; - else if (result == "&&") return "OR"; + if (result == "||") return "OR"; + else if (result == "&&") return "AND"; return result; } private static string GetSqlPartError(object value) diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs index a82d5209c..b50677c51 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs @@ -60,6 +60,10 @@ namespace SqlSugar return "'" + date.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"; } } + else if (type == UtilConstants.DateTimeOffsetType) + { + return GetDateTimeOffsetString(value); + } else if (type == UtilConstants.DateType && iswhere) { var parameterName = this.Builder.SqlParameterKeyWord + name + i; @@ -97,5 +101,15 @@ namespace SqlSugar } } } + + private object GetDateTimeOffsetString(object value) + { + var date = UtilMethods.ConvertFromDateTimeOffset((DateTimeOffset)value); + if (date < UtilMethods.GetMinDate(this.Context.CurrentConnectionConfig)) + { + date = UtilMethods.GetMinDate(this.Context.CurrentConnectionConfig); + } + return "'" + date.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"; + } } }