Skip to content

Commit 9a41370

Browse files
committed
- 补充 pgsql FreeSql.Generator 默认值 uuid_generate_v4() 生成;#2088
1 parent 5c4ec59 commit 9a41370

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

Extensions/FreeSql.Generator/RazorModel.cs

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ public string GetColumnDefaultValue(DbColumnInfo col, bool isInsertValueSql)
229229
var defval = col.DefaultValue?.Trim();
230230
if (string.IsNullOrEmpty(defval)) return null;
231231
var cstype = col.CsType.NullableTypeOrThis();
232-
if (fsql.Ado.DataType == DataType.SqlServer || fsql.Ado.DataType == DataType.OdbcSqlServer)
232+
if (fsql.Ado.DataType == DataType.SqlServer || fsql.Ado.DataType == DataType.OdbcSqlServer || fsql.Ado.DataType == DataType.CustomSqlServer)
233233
{
234234
if (defval.StartsWith("((") && defval.EndsWith("))")) defval = defval.Substring(2, defval.Length - 4);
235235
else if (defval.StartsWith("('") && defval.EndsWith("')")) defval = defval.Substring(2, defval.Length - 4).Replace("''", "'");
@@ -240,19 +240,28 @@ public string GetColumnDefaultValue(DbColumnInfo col, bool isInsertValueSql)
240240
if (cstype == typeof(string) && string.Compare(defval, "newid()", true) == 0) return $"Guid.NewGuid().ToString().ToUpper()";
241241
if (defval == "NULL") return null;
242242
}
243-
if ((cstype == typeof(string) && defval.StartsWith("'") && defval.EndsWith("'::character varying") ||
244-
cstype == typeof(Guid) && defval.StartsWith("'") && defval.EndsWith("'::uuid")
245-
) && (fsql.Ado.DataType == DataType.PostgreSQL || fsql.Ado.DataType == DataType.OdbcPostgreSQL ||
246-
fsql.Ado.DataType == DataType.KingbaseES ||
247-
fsql.Ado.DataType == DataType.ShenTong))
248-
{
249-
defval = defval.Substring(1, defval.LastIndexOf("'::") - 1).Replace("''", "'");
250-
}
251-
else if (defval.StartsWith("'") && defval.EndsWith("'"))
243+
if (!isInsertValueSql && (fsql.Ado.DataType == DataType.PostgreSQL || fsql.Ado.DataType == DataType.OdbcPostgreSQL || fsql.Ado.DataType == DataType.CustomPostgreSQL ||
244+
fsql.Ado.DataType == DataType.KingbaseES ||
245+
fsql.Ado.DataType == DataType.ShenTong))
252246
{
253-
defval = defval.Substring(1, defval.Length - 2).Replace("''", "'");
254-
if (fsql.Ado.DataType == DataType.MySql || fsql.Ado.DataType == DataType.OdbcMySql) defval = defval.Replace("\\\\", "\\");
247+
switch (defval)
248+
{
249+
case "uuid_generate_v4()": return null;
250+
}
255251
}
252+
if ((cstype == typeof(string) && defval.StartsWith("'") && defval.EndsWith("'::character varying") ||
253+
cstype == typeof(Guid) && defval.StartsWith("'") && defval.EndsWith("'::uuid")
254+
) && (fsql.Ado.DataType == DataType.PostgreSQL || fsql.Ado.DataType == DataType.OdbcPostgreSQL || fsql.Ado.DataType == DataType.CustomPostgreSQL ||
255+
fsql.Ado.DataType == DataType.KingbaseES ||
256+
fsql.Ado.DataType == DataType.ShenTong))
257+
{
258+
defval = defval.Substring(1, defval.LastIndexOf("'::") - 1).Replace("''", "'");
259+
}
260+
else if (defval.StartsWith("'") && defval.EndsWith("'"))
261+
{
262+
defval = defval.Substring(1, defval.Length - 2).Replace("''", "'");
263+
if (fsql.Ado.DataType == DataType.MySql || fsql.Ado.DataType == DataType.OdbcMySql) defval = defval.Replace("\\\\", "\\");
264+
}
256265
if (cstype.IsNumberType() && decimal.TryParse(defval, out var trydec))
257266
{
258267
if (isInsertValueSql) return defval;

0 commit comments

Comments
 (0)