So the "Scale" part of the type is replaced by the "Length" property. It should take the "Scale" property by defining the parameter as $s, like it is done in the SQL Server dialects for instance.
So calling dialect.GetTypeName(new SqlType(DbType.Decimal, 19, 9) should return NUMERIC(19, 9) and not NUMERIC(19, 0") which is worse than not specifying a scale at all.
In src/NHibernate/Dialect/MsSqlCeDialect.cs, the Decimal type is registered like this:
RegisterColumnType(DbType.Decimal, 19, "NUMERIC(19, $1)");
So the "Scale" part of the type is replaced by the "Length" property. It should take the "Scale" property by defining the parameter as $s, like it is done in the SQL Server dialects for instance.
RegisterColumnType(DbType.Decimal, 19, "NUMERIC(19, $s)");
So calling dialect.GetTypeName(new SqlType(DbType.Decimal, 19, 9) should return NUMERIC(19, 9) and not NUMERIC(19, 0") which is worse than not specifying a scale at all.