diff --git a/src/NHibernate.Test/TypesTest/ChangeDefaultTypeWithLengthFixture.cs b/src/NHibernate.Test/TypesTest/ChangeDefaultTypeWithLengthFixture.cs index b499568f1da..e8fbd52f2db 100644 --- a/src/NHibernate.Test/TypesTest/ChangeDefaultTypeWithLengthFixture.cs +++ b/src/NHibernate.Test/TypesTest/ChangeDefaultTypeWithLengthFixture.cs @@ -68,16 +68,16 @@ public void PropertyType() var propertyType25 = Sfi.GetClassMetadata(typeof(ChangeDefaultTypeClass)) .GetPropertyType(nameof(ChangeDefaultTypeClass.StringTypeLengthInType25)); Assert.That( - propertyType25, - Is.EqualTo(_testDefaultStringType)); + propertyType25.GetType(), + Is.EqualTo(_testDefaultStringType.GetType())); Assert.That(propertyType25.SqlTypes(Sfi)[0].Length, Is.EqualTo(25)); var propertyType20 = Sfi.GetClassMetadata(typeof(ChangeDefaultTypeClass)) .GetPropertyType(nameof(ChangeDefaultTypeClass.StringTypeExplicitLength20)); Assert.That( - propertyType20, - Is.EqualTo(_testDefaultStringType)); + propertyType20.GetType(), + Is.EqualTo(_testDefaultStringType.GetType())); Assert.That(propertyType20.SqlTypes(Sfi)[0].Length, Is.EqualTo(20)); } diff --git a/src/NHibernate.Test/TypesTest/ChangeDefaultTypeWithPrecisionFixture.cs b/src/NHibernate.Test/TypesTest/ChangeDefaultTypeWithPrecisionFixture.cs index 456a81b8f64..2d803f5b4e5 100644 --- a/src/NHibernate.Test/TypesTest/ChangeDefaultTypeWithPrecisionFixture.cs +++ b/src/NHibernate.Test/TypesTest/ChangeDefaultTypeWithPrecisionFixture.cs @@ -69,8 +69,8 @@ public void PropertyType() var propertyType1 = Sfi.GetClassMetadata(typeof(ChangeDefaultTypeClass)) .GetPropertyType(nameof(ChangeDefaultTypeClass.CurrencyTypeExplicitPrecision6And3)); Assert.That( - propertyType1, - Is.EqualTo(_testDefaultType)); + propertyType1.GetType(), + Is.EqualTo(_testDefaultType.GetType())); Assert.That(propertyType1.SqlTypes(Sfi)[0].Precision, Is.EqualTo(6)); Assert.That(propertyType1.SqlTypes(Sfi)[0].Scale, Is.EqualTo(3)); @@ -78,8 +78,8 @@ public void PropertyType() .GetPropertyType(nameof(ChangeDefaultTypeClass.CurrencyTypePrecisionInType5And2)); Assert.That( - propertyType2, - Is.EqualTo(_testDefaultType)); + propertyType2.GetType(), + Is.EqualTo(_testDefaultType.GetType())); Assert.That(propertyType2.SqlTypes(Sfi)[0].Precision, Is.EqualTo(5)); Assert.That(propertyType2.SqlTypes(Sfi)[0].Scale, Is.EqualTo(2)); } diff --git a/src/NHibernate/SqlTypes/SqlType.cs b/src/NHibernate/SqlTypes/SqlType.cs index c32c377723c..29523e9122e 100644 --- a/src/NHibernate/SqlTypes/SqlType.cs +++ b/src/NHibernate/SqlTypes/SqlType.cs @@ -21,7 +21,7 @@ namespace NHibernate.SqlTypes ///

/// [Serializable] - public class SqlType + public class SqlType : IEquatable { private readonly DbType dbType; private readonly int length; @@ -125,24 +125,34 @@ public override bool Equals(object obj) public bool Equals(SqlType rhsSqlType) { + if (ReferenceEquals(this, rhsSqlType)) + return true; + if (rhsSqlType == null) - { return false; - } - if (LengthDefined) - { - return (DbType.Equals(rhsSqlType.DbType)) && (Length == rhsSqlType.Length); - } - if (PrecisionDefined) - { - return (DbType.Equals(rhsSqlType.DbType)) && (Precision == rhsSqlType.Precision) && (Scale == rhsSqlType.Scale); - } - if (ScaleDefined) - { - return DbType.Equals(rhsSqlType.DbType) && Scale == rhsSqlType.Scale; - } - return (DbType.Equals(rhsSqlType.DbType)); + if (DbType != rhsSqlType.DbType) + return false; + + if (LengthDefined != rhsSqlType.LengthDefined) + return false; + + if (PrecisionDefined != rhsSqlType.PrecisionDefined) + return false; + + if (ScaleDefined != rhsSqlType.ScaleDefined) + return false; + + if (Length != rhsSqlType.Length) + return false; + + if (Precision != rhsSqlType.Precision) + return false; + + if (Scale != rhsSqlType.Scale) + return false; + + return true; } public override string ToString()