mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-06 16:30:52 +08:00
- 补充 pgsql FreeSql.Generator 默认值 uuid_generate_v4() 生成;#2088
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user