From 9a413703154c67155a1b4370606547228b071752 Mon Sep 17 00:00:00 2001 From: 28810 <2881099@qq.com> Date: Fri, 8 Aug 2025 12:04:15 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E8=A1=A5=E5=85=85=20pgsql=20FreeSql.Genera?= =?UTF-8?q?tor=20=E9=BB=98=E8=AE=A4=E5=80=BC=20uuid=5Fgenerate=5Fv4()=20?= =?UTF-8?q?=E7=94=9F=E6=88=90=EF=BC=9B#2088?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Extensions/FreeSql.Generator/RazorModel.cs | 35 ++++++++++++++-------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/Extensions/FreeSql.Generator/RazorModel.cs b/Extensions/FreeSql.Generator/RazorModel.cs index f2bba05c0..faa0cd16f 100644 --- a/Extensions/FreeSql.Generator/RazorModel.cs +++ b/Extensions/FreeSql.Generator/RazorModel.cs @@ -229,7 +229,7 @@ public class RazorModel var defval = col.DefaultValue?.Trim(); if (string.IsNullOrEmpty(defval)) return null; var cstype = col.CsType.NullableTypeOrThis(); - if (fsql.Ado.DataType == DataType.SqlServer || fsql.Ado.DataType == DataType.OdbcSqlServer) + if (fsql.Ado.DataType == DataType.SqlServer || fsql.Ado.DataType == DataType.OdbcSqlServer || fsql.Ado.DataType == DataType.CustomSqlServer) { if (defval.StartsWith("((") && defval.EndsWith("))")) defval = defval.Substring(2, defval.Length - 4); else if (defval.StartsWith("('") && defval.EndsWith("')")) defval = defval.Substring(2, defval.Length - 4).Replace("''", "'"); @@ -240,19 +240,28 @@ public class RazorModel if (cstype == typeof(string) && string.Compare(defval, "newid()", true) == 0) return $"Guid.NewGuid().ToString().ToUpper()"; if (defval == "NULL") return null; } + if (!isInsertValueSql && (fsql.Ado.DataType == DataType.PostgreSQL || fsql.Ado.DataType == DataType.OdbcPostgreSQL || fsql.Ado.DataType == DataType.CustomPostgreSQL || + fsql.Ado.DataType == DataType.KingbaseES || + fsql.Ado.DataType == DataType.ShenTong)) + { + switch (defval) + { + case "uuid_generate_v4()": return null; + } + } if ((cstype == typeof(string) && defval.StartsWith("'") && defval.EndsWith("'::character varying") || - cstype == typeof(Guid) && defval.StartsWith("'") && defval.EndsWith("'::uuid") - ) && (fsql.Ado.DataType == DataType.PostgreSQL || fsql.Ado.DataType == DataType.OdbcPostgreSQL || - fsql.Ado.DataType == DataType.KingbaseES || - fsql.Ado.DataType == DataType.ShenTong)) - { - defval = defval.Substring(1, defval.LastIndexOf("'::") - 1).Replace("''", "'"); - } - else if (defval.StartsWith("'") && defval.EndsWith("'")) - { - defval = defval.Substring(1, defval.Length - 2).Replace("''", "'"); - if (fsql.Ado.DataType == DataType.MySql || fsql.Ado.DataType == DataType.OdbcMySql) defval = defval.Replace("\\\\", "\\"); - } + cstype == typeof(Guid) && defval.StartsWith("'") && defval.EndsWith("'::uuid") + ) && (fsql.Ado.DataType == DataType.PostgreSQL || fsql.Ado.DataType == DataType.OdbcPostgreSQL || fsql.Ado.DataType == DataType.CustomPostgreSQL || + fsql.Ado.DataType == DataType.KingbaseES || + fsql.Ado.DataType == DataType.ShenTong)) + { + defval = defval.Substring(1, defval.LastIndexOf("'::") - 1).Replace("''", "'"); + } + else if (defval.StartsWith("'") && defval.EndsWith("'")) + { + defval = defval.Substring(1, defval.Length - 2).Replace("''", "'"); + if (fsql.Ado.DataType == DataType.MySql || fsql.Ado.DataType == DataType.OdbcMySql) defval = defval.Replace("\\\\", "\\"); + } if (cstype.IsNumberType() && decimal.TryParse(defval, out var trydec)) { if (isInsertValueSql) return defval;