diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs index 7de7db9d0..972d38cf1 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs @@ -1064,5 +1064,10 @@ namespace SqlSugar var parameterNameA = mode.Args[0].MemberName; return $" CEILING({parameterNameA}) "; } + public virtual string NewUid(MethodCallExpressionModel mode) + { + return $" uuid_generate_v4() "; + } + } } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs index 52167e3dd..72e05579d 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/IDbMethods.cs @@ -120,6 +120,7 @@ namespace SqlSugar string Right(MethodCallExpressionModel mode); string PadLeft(MethodCallExpressionModel mode); string Floor(MethodCallExpressionModel mode); - string Ceil(MethodCallExpressionModel mode); + string Ceil(MethodCallExpressionModel mode); + string NewUid(MethodCallExpressionModel mode); } } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs index 54763a3b8..0c1495cc8 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/SqlFunc.cs @@ -303,6 +303,7 @@ namespace SqlSugar public static string ToVarchar(object value) { return value.ObjToString(); } public static decimal ToDecimal(object value) { return value.ObjToDecimal(); } public static Guid ToGuid(object value) { return Guid.Parse(value.ObjToString()); } + public static Guid NewUid() { throw new NotSupportedException("Can only be used in expressions"); } public static double ToDouble(object value) { return value.ObjToMoney(); } public static bool ToBool(object value) { return value.ObjToBool(); } public static string Substring(object value, int index, int length) { return value.ObjToString().Substring(index, length); } diff --git a/Src/Asp.Net/SqlSugar/Realization/Dm/SqlBuilder/DmExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/Dm/SqlBuilder/DmExpressionContext.cs index 99538a6ac..3ff6f94a7 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Dm/SqlBuilder/DmExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Dm/SqlBuilder/DmExpressionContext.cs @@ -259,5 +259,10 @@ namespace SqlSugar var parameterNameA = mode.Args[0].MemberName; return $" CEIL({parameterNameA}) "; } + + public override string NewUid(MethodCallExpressionModel mode) + { + return " SYS_GUID() "; + } } } diff --git a/Src/Asp.Net/SqlSugar/Realization/Kdbndp/SqlBuilder/KdbndpQueryBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/Kdbndp/SqlBuilder/KdbndpQueryBuilder.cs index c33ae3f66..b52898203 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Kdbndp/SqlBuilder/KdbndpQueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Kdbndp/SqlBuilder/KdbndpQueryBuilder.cs @@ -37,6 +37,11 @@ namespace SqlSugar { base.AppendFilter(); string oldOrderValue = this.OrderByValue; + var isNullOrderValue = Skip == 0 && Take == 1 && oldOrderValue == "ORDER BY NOW() "; + if (isNullOrderValue) + { + this.OrderByValue = null; + } string result = null; sql = new StringBuilder(); sql.AppendFormat(SqlTemplate, GetSelectValue, GetTableNameString, GetWhereValueString, GetGroupByString + HavingInfos, (Skip != null || Take != null) ? null : GetOrderByString); @@ -61,6 +66,19 @@ namespace SqlSugar result = sql.ToString(); } this.OrderByValue = oldOrderValue; + result = GetSqlQuerySql(result); + if (result.IndexOf("-- No table") > 0) + { + return "-- No table"; + } + if (TranLock != null) + { + result = result + TranLock; + } + if (result.Contains("uuid_generate_v4()")) + { + result = " CREATE EXTENSION IF NOT EXISTS pgcrypto;CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\"; " + result; + } return result; } diff --git a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs index f6efc1468..cca097292 100644 --- a/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/MySql/SqlBuilder/MySqlExpressionContext.cs @@ -245,6 +245,10 @@ namespace SqlSugar return $" JSON_CONTAINS({model.Args[0].MemberName},'{{\"{model.Args[1].MemberValue}\":\"{model.Args[2].MemberValue.ObjToStringNoTrim().ToSqlFilter()}\"}}')"; } } + public override string NewUid(MethodCallExpressionModel mode) + { + return " CONCAT(\r\n LPAD(UPPER(HEX(FLOOR(UUID_SHORT() / 0x100000000))), 8, '0'),\r\n '-',\r\n LPAD(UPPER(HEX(FLOOR(UUID_SHORT() / 0x10000) & 0xFFFF)), 4, '0'),\r\n '-',\r\n LPAD(UPPER(HEX(FLOOR(UUID_SHORT() / 0x100) & 0xFFFF)), 4, '0'),\r\n '-',\r\n LPAD(UPPER(HEX(UUID_SHORT() & 0xFF)), 4, '0'),\r\n '-000000000000'\r\n ) "; + } //public override string TrimEnd(MethodCallExpressionModel mode) //{ // var parameterNameA = mode.Args[0].MemberName; diff --git a/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs index 7855e2613..34c6f1442 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs @@ -385,5 +385,10 @@ namespace SqlSugar var parameterNameA = mode.Args[0].MemberName; return $" CEIL({parameterNameA}) "; } + + public override string NewUid(MethodCallExpressionModel mode) + { + return " SYS_GUID() "; + } } } diff --git a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLQueryBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLQueryBuilder.cs index 403d9859e..304a380b6 100644 --- a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLQueryBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLQueryBuilder.cs @@ -86,6 +86,10 @@ namespace SqlSugar { result = result + TranLock; } + if (result.Contains("uuid_generate_v4()")) + { + result=" CREATE EXTENSION IF NOT EXISTS pgcrypto;CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\"; "+ result; + } return result; } diff --git a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs index 9352ef4a3..6699294e6 100644 --- a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerExpressionContext.cs @@ -130,6 +130,11 @@ namespace SqlSugar var parameterNameC = mode.Args[2].MemberName; return $" CONCAT(REPLICATE({parameterNameC}, {parameterNameB} - LEN({parameterNameA})), {parameterNameA}) "; } + + public override string NewUid(MethodCallExpressionModel mode) + { + return " NEWID() "; + } } diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs index 33b23b964..b99aac4d6 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteExpressionContext.cs @@ -319,5 +319,10 @@ namespace SqlSugar var parameterNameB = mode.Args[1].MemberName; return $" SUBSTR({parameterNameA}, -2, {parameterNameB}) "; } + + public override string NewUid(MethodCallExpressionModel mode) + { + return " substr(upper(hex(randomblob(4))), 1, 8) || '-' ||\r\n substr(upper(hex(randomblob(2))), 1, 4) || '-' ||\r\n '4' || substr(upper(hex(randomblob(2))), 2, 3) || '-' ||\r\n substr('89ab', 1 + (abs(random()) % 4), 1) || substr(upper(hex(randomblob(2))), 2, 3) || '-' ||\r\n substr(upper(hex(randomblob(6))), 1, 12) "; + } } }