From c7608204dae64e90a456f5352840ec260669e80a Mon Sep 17 00:00:00 2001 From: Shay Rojansky Date: Sun, 1 Jun 2025 10:31:56 +0200 Subject: [PATCH] Parse float/double/decimal in scaffolding Closes #3540 --- .../Scaffolding/Internal/NpgsqlDatabaseModelFactory.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/EFCore.PG/Scaffolding/Internal/NpgsqlDatabaseModelFactory.cs b/src/EFCore.PG/Scaffolding/Internal/NpgsqlDatabaseModelFactory.cs index 4af78bfc7..fe1c9905f 100644 --- a/src/EFCore.PG/Scaffolding/Internal/NpgsqlDatabaseModelFactory.cs +++ b/src/EFCore.PG/Scaffolding/Internal/NpgsqlDatabaseModelFactory.cs @@ -400,7 +400,7 @@ ORDER BY attnum else { column.DefaultValueSql = defaultValueSql; - column.DefaultValue = ParseClrDefault(storeType, defaultValueSql); + column.DefaultValue = ParseClrDefault(systemTypeName, defaultValueSql); AdjustDefaults(column, systemTypeName); } @@ -514,7 +514,7 @@ ORDER BY attnum while (defaultValueSql.StartsWith('(') && defaultValueSql.EndsWith(')')) { - defaultValueSql = (defaultValueSql.Substring(1, defaultValueSql.Length - 2)).Trim(); + defaultValueSql = defaultValueSql.Substring(1, defaultValueSql.Length - 2).Trim(); } return dataTypeName switch @@ -529,6 +529,10 @@ ORDER BY attnum "integer" or "int" or "int4" => int.TryParse(defaultValueSql, CultureInfo.InvariantCulture, out var @int) ? @int : null, "bigint" or "int8" => long.TryParse(defaultValueSql, CultureInfo.InvariantCulture, out var @long) ? @long : null, + "real" or "float4"=> float.TryParse(defaultValueSql, CultureInfo.InvariantCulture, out var @float) ? @float : null, + "double precision" or "float8" => double.TryParse(defaultValueSql, CultureInfo.InvariantCulture, out var @double) ? @double : null, + "numeric" or "decimal" => decimal.TryParse(defaultValueSql, CultureInfo.InvariantCulture, out var @decimal) ? @decimal : null, + _ => null }; }