Beispiel #1
0
    public void TestWithDifferentPrecisionsAndScale(int scale, int precision, double lowerBound, double upperBound)
    {
        var dataAnnotationDefinitionNumericRange = DoubleTypeRangeCalculator.CalculateRange(scale, precision);

        dataAnnotationDefinitionNumericRange.LowerBound.Should().Be(lowerBound);
        dataAnnotationDefinitionNumericRange.UpperBound.Should().Be(upperBound);
    }
Beispiel #2
0
    public static SqlTypeNumberBase FromPrecisionAndScale(string typeName, int precision, int?scale)
    {
        var sqlTypeNumberBase = new SqlTypeNumberBase(typeName);
        var scale2            = scale ?? 0;
        var range             = DoubleTypeRangeCalculator.CalculateRange(precision, scale2);

        if (typeName.InsensitiveEquals("decimal"))
        {
            try
            {
                range.UpperBound = (double)(decimal)range.UpperBound;
            }
            catch (Exception)
            {
                range.UpperBound = (double)decimal.MaxValue;
            }
            try
            {
                range.LowerBound = (double)(decimal)range.LowerBound;
            }
            catch (Exception)
            {
                range.LowerBound = (double)decimal.MinValue;
            }
        }

        sqlTypeNumberBase.UpperBound       = range.UpperBound;
        sqlTypeNumberBase.LowerBound       = range.LowerBound;
        sqlTypeNumberBase.NumericPrecision = precision;
        sqlTypeNumberBase.NumericScale     = scale2;
        return(sqlTypeNumberBase);
    }