diff --git a/doc/reference/modules/basic_mapping.xml b/doc/reference/modules/basic_mapping.xml
index 122def3f62f..2056bbe27a4 100644
--- a/doc/reference/modules/basic_mapping.xml
+++ b/doc/reference/modules/basic_mapping.xml
@@ -3919,7 +3919,8 @@
CultureInfo
System.Globalization.CultureInfo
- DbType.String - 5 chars for culture
+ DbType.String - 5 chars for culture by default;
+ can be modified by the length mapping attribute.
Default when no type attribute specified.
diff --git a/src/NHibernate.Test/Async/TypesTest/AbstractDateTimeTypeFixture.cs b/src/NHibernate.Test/Async/TypesTest/AbstractDateTimeTypeFixture.cs
index 4588e8d1017..4307080f4cf 100644
--- a/src/NHibernate.Test/Async/TypesTest/AbstractDateTimeTypeFixture.cs
+++ b/src/NHibernate.Test/Async/TypesTest/AbstractDateTimeTypeFixture.cs
@@ -69,14 +69,10 @@ protected override void OnSetUp()
protected override void OnTearDown()
{
- base.OnTearDown();
-
- using (var s = OpenSession())
- using (var t = s.BeginTransaction())
- {
- s.CreateQuery("delete from DateTimeClass").ExecuteUpdate();
- t.Commit();
- }
+ using var s = OpenSession();
+ using var t = s.BeginTransaction();
+ s.CreateQuery("delete from DateTimeClass").ExecuteUpdate();
+ t.Commit();
}
protected override void DropSchema()
diff --git a/src/NHibernate.Test/Async/TypesTest/CultureInfoTypeFixture.cs b/src/NHibernate.Test/Async/TypesTest/CultureInfoTypeFixture.cs
new file mode 100644
index 00000000000..4ec37748718
--- /dev/null
+++ b/src/NHibernate.Test/Async/TypesTest/CultureInfoTypeFixture.cs
@@ -0,0 +1,105 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by AsyncGenerator.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+
+using System;
+using System.Globalization;
+using NHibernate.Dialect;
+using NHibernate.Type;
+using NUnit.Framework;
+
+namespace NHibernate.Test.TypesTest
+{
+ using System.Threading.Tasks;
+ [TestFixture]
+ public class CultureInfoTypeFixtureAsync : TypeFixtureBase
+ {
+ protected override string TypeName => "CultureInfo";
+
+ [Test]
+ public async Task ReadWriteBasicCultureAsync()
+ {
+ Guid id;
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var entity = new CultureInfoClass { BasicCulture = CultureInfo.GetCultureInfo("en-US") };
+ await (s.SaveAsync(entity));
+ id = entity.Id;
+ await (t.CommitAsync());
+ }
+
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var entity = await (s.GetAsync(id));
+ Assert.That(entity.BasicCulture, Is.Not.Null);
+ Assert.That(entity.BasicCulture.Name, Is.EqualTo("en-US"));
+ Assert.That(entity.BasicCulture, Is.EqualTo(CultureInfo.GetCultureInfo("en-US")));
+ entity.BasicCulture = CultureInfo.GetCultureInfo("fr-BE");
+ await (t.CommitAsync());
+ }
+
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var entity = await (s.GetAsync(id));
+ Assert.That(entity.BasicCulture.Name, Is.EqualTo("fr-BE"));
+ Assert.That(entity.BasicCulture, Is.EqualTo(CultureInfo.GetCultureInfo("fr-BE")));
+ entity.BasicCulture = null;
+ await (t.CommitAsync());
+ }
+
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var entity = await (s.GetAsync(id));
+ Assert.That(entity.BasicCulture, Is.Null);
+ await (t.CommitAsync());
+ }
+ }
+
+ [Test]
+ public async Task ReadWriteExtendedCultureAsync()
+ {
+ Guid id;
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var entity = new CultureInfoClass { ExtendedCulture = CultureInfo.GetCultureInfo("en-US-posix") };
+ await (s.SaveAsync(entity));
+ id = entity.Id;
+ await (t.CommitAsync());
+ }
+
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var entity = await (s.GetAsync(id));
+ Assert.That(entity.ExtendedCulture, Is.Not.Null);
+ // Under Windows, it is named en-US-posix, but en-US-POSIX under Linux.
+ Assert.That(entity.ExtendedCulture.Name, Is.EqualTo("en-US-posix").IgnoreCase);
+ Assert.That(entity.ExtendedCulture, Is.EqualTo(CultureInfo.GetCultureInfo("en-US-posix")));
+ await (t.CommitAsync());
+ }
+ }
+
+ [Test]
+ public async Task WriteTooLongCultureAsync()
+ {
+ if (Dialect is SQLiteDialect)
+ Assert.Ignore("SQLite has no length limited string type.");
+ using var s = OpenSession();
+ using var t = s.BeginTransaction();
+ var entity = new CultureInfoClass { BasicCulture = CultureInfo.GetCultureInfo("en-US-posix") };
+ await (s.SaveAsync(entity));
+ Assert.That(t.Commit, Throws.Exception);
+ }
+ }
+}
diff --git a/src/NHibernate.Test/Async/TypesTest/DateTimeOffsetTypeFixture.cs b/src/NHibernate.Test/Async/TypesTest/DateTimeOffsetTypeFixture.cs
index 64e62c0e326..1c604513d85 100644
--- a/src/NHibernate.Test/Async/TypesTest/DateTimeOffsetTypeFixture.cs
+++ b/src/NHibernate.Test/Async/TypesTest/DateTimeOffsetTypeFixture.cs
@@ -69,18 +69,6 @@ protected override void OnSetUp()
}
}
- protected override void OnTearDown()
- {
- base.OnTearDown();
-
- using (var s = OpenSession())
- using (var t = s.BeginTransaction())
- {
- s.CreateQuery("delete from DateTimeOffsetClass").ExecuteUpdate();
- t.Commit();
- }
- }
-
protected override void DropSchema()
{
(Sfi.ConnectionProvider.Driver as ClientDriverWithParamsStats)?.CleanUp();
@@ -354,6 +342,14 @@ public class DateTimeOffsetTypeWithScaleFixtureAsync : DateTimeOffsetTypeFixture
// The timestamp rounding in seeding does not account scale.
protected override bool RevisionCheck => false;
+ protected override void OnTearDown()
+ {
+ using var s = OpenSession();
+ using var t = s.BeginTransaction();
+ s.CreateQuery("delete DateTimeOffsetClass").ExecuteUpdate();
+ t.Commit();
+ }
+
[Test]
public async Task LowerDigitsAreIgnoredAsync()
{
diff --git a/src/NHibernate.Test/Async/TypesTest/DecimalTypeFixture.cs b/src/NHibernate.Test/Async/TypesTest/DecimalTypeFixture.cs
index c4ab2a0c6f0..1917cbd0b4b 100644
--- a/src/NHibernate.Test/Async/TypesTest/DecimalTypeFixture.cs
+++ b/src/NHibernate.Test/Async/TypesTest/DecimalTypeFixture.cs
@@ -54,18 +54,6 @@ protected override void OnSetUp()
}
}
- protected override void OnTearDown()
- {
- base.OnTearDown();
-
- using (var s = OpenSession())
- using (var t = s.BeginTransaction())
- {
- s.CreateQuery("delete from DecimalClass").ExecuteUpdate();
- t.Commit();
- }
- }
-
[Test]
public async Task ReadWriteAsync()
{
diff --git a/src/NHibernate.Test/Async/TypesTest/EnumStringTypeFixture.cs b/src/NHibernate.Test/Async/TypesTest/EnumStringTypeFixture.cs
index 255951b0b7a..1733fd0bce8 100644
--- a/src/NHibernate.Test/Async/TypesTest/EnumStringTypeFixture.cs
+++ b/src/NHibernate.Test/Async/TypesTest/EnumStringTypeFixture.cs
@@ -40,14 +40,6 @@ protected override void OnSetUp()
s.Close();
}
- protected override void OnTearDown()
- {
- ISession s = OpenSession();
- s.Delete("from EnumStringClass");
- s.Flush();
- s.Close();
- }
-
[Test]
public async Task ReadFromLoadAsync()
{
diff --git a/src/NHibernate.Test/Async/TypesTest/GenericEnumStringTypeFixture.cs b/src/NHibernate.Test/Async/TypesTest/GenericEnumStringTypeFixture.cs
index 699ef01850b..06aa32c1ab7 100644
--- a/src/NHibernate.Test/Async/TypesTest/GenericEnumStringTypeFixture.cs
+++ b/src/NHibernate.Test/Async/TypesTest/GenericEnumStringTypeFixture.cs
@@ -42,14 +42,6 @@ protected override void OnSetUp()
s.Close();
}
- protected override void OnTearDown()
- {
- ISession s = OpenSession();
- s.Delete("from GenericEnumStringClass");
- s.Flush();
- s.Close();
- }
-
[Test]
public async Task ReadFromLoadAsync()
{
diff --git a/src/NHibernate.Test/Async/TypesTest/StringTypeFixture.cs b/src/NHibernate.Test/Async/TypesTest/StringTypeFixture.cs
index a7d74e58e4d..0808ca7e837 100644
--- a/src/NHibernate.Test/Async/TypesTest/StringTypeFixture.cs
+++ b/src/NHibernate.Test/Async/TypesTest/StringTypeFixture.cs
@@ -26,14 +26,6 @@ protected override string TypeName
get { return "String"; }
}
- protected override void OnTearDown()
- {
- using (var s = OpenSession())
- {
- s.CreateQuery("delete from StringClass").ExecuteUpdate();
- }
- }
-
[Test]
public async Task InsertNullValueAsync()
{
diff --git a/src/NHibernate.Test/Async/TypesTest/TimeAsTimeSpanTypeFixture.cs b/src/NHibernate.Test/Async/TypesTest/TimeAsTimeSpanTypeFixture.cs
index 134fdee1b32..f9c585d7956 100644
--- a/src/NHibernate.Test/Async/TypesTest/TimeAsTimeSpanTypeFixture.cs
+++ b/src/NHibernate.Test/Async/TypesTest/TimeAsTimeSpanTypeFixture.cs
@@ -50,18 +50,6 @@ protected override string TypeName
get { return "TimeAsTimeSpan"; }
}
- protected override void OnTearDown()
- {
- base.OnTearDown();
-
- using (var s = OpenSession())
- using (var tx = s.BeginTransaction())
- {
- s.CreateQuery("delete from TimeAsTimeSpanClass").ExecuteUpdate();
- tx.Commit();
- }
- }
-
[Test]
public async Task SavingAndRetrievingAsync()
{
diff --git a/src/NHibernate.Test/TypesTest/AbstractDateTimeTypeFixture.cs b/src/NHibernate.Test/TypesTest/AbstractDateTimeTypeFixture.cs
index 67b36a0d2cc..0d95535b947 100644
--- a/src/NHibernate.Test/TypesTest/AbstractDateTimeTypeFixture.cs
+++ b/src/NHibernate.Test/TypesTest/AbstractDateTimeTypeFixture.cs
@@ -57,14 +57,10 @@ protected override void OnSetUp()
protected override void OnTearDown()
{
- base.OnTearDown();
-
- using (var s = OpenSession())
- using (var t = s.BeginTransaction())
- {
- s.CreateQuery("delete from DateTimeClass").ExecuteUpdate();
- t.Commit();
- }
+ using var s = OpenSession();
+ using var t = s.BeginTransaction();
+ s.CreateQuery("delete from DateTimeClass").ExecuteUpdate();
+ t.Commit();
}
protected override void DropSchema()
diff --git a/src/NHibernate.Test/TypesTest/CultureInfoClass.cs b/src/NHibernate.Test/TypesTest/CultureInfoClass.cs
new file mode 100644
index 00000000000..601cf00fbda
--- /dev/null
+++ b/src/NHibernate.Test/TypesTest/CultureInfoClass.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Globalization;
+
+namespace NHibernate.Test.TypesTest
+{
+ public class CultureInfoClass
+ {
+ public Guid Id { get; set; }
+ public CultureInfo BasicCulture { get; set; }
+ public CultureInfo ExtendedCulture { get; set; }
+ }
+}
diff --git a/src/NHibernate.Test/TypesTest/CultureInfoClass.hbm.xml b/src/NHibernate.Test/TypesTest/CultureInfoClass.hbm.xml
new file mode 100644
index 00000000000..8472d89d7f0
--- /dev/null
+++ b/src/NHibernate.Test/TypesTest/CultureInfoClass.hbm.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/NHibernate.Test/TypesTest/CultureInfoTypeFixture.cs b/src/NHibernate.Test/TypesTest/CultureInfoTypeFixture.cs
new file mode 100644
index 00000000000..d860c04ba1f
--- /dev/null
+++ b/src/NHibernate.Test/TypesTest/CultureInfoTypeFixture.cs
@@ -0,0 +1,102 @@
+using System;
+using System.Globalization;
+using NHibernate.Dialect;
+using NHibernate.Type;
+using NUnit.Framework;
+
+namespace NHibernate.Test.TypesTest
+{
+ [TestFixture]
+ public class CultureInfoTypeFixture : TypeFixtureBase
+ {
+ protected override string TypeName => "CultureInfo";
+
+ [Test]
+ public void ReadWriteBasicCulture()
+ {
+ Guid id;
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var entity = new CultureInfoClass { BasicCulture = CultureInfo.GetCultureInfo("en-US") };
+ s.Save(entity);
+ id = entity.Id;
+ t.Commit();
+ }
+
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var entity = s.Get(id);
+ Assert.That(entity.BasicCulture, Is.Not.Null);
+ Assert.That(entity.BasicCulture.Name, Is.EqualTo("en-US"));
+ Assert.That(entity.BasicCulture, Is.EqualTo(CultureInfo.GetCultureInfo("en-US")));
+ entity.BasicCulture = CultureInfo.GetCultureInfo("fr-BE");
+ t.Commit();
+ }
+
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var entity = s.Get(id);
+ Assert.That(entity.BasicCulture.Name, Is.EqualTo("fr-BE"));
+ Assert.That(entity.BasicCulture, Is.EqualTo(CultureInfo.GetCultureInfo("fr-BE")));
+ entity.BasicCulture = null;
+ t.Commit();
+ }
+
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var entity = s.Get(id);
+ Assert.That(entity.BasicCulture, Is.Null);
+ t.Commit();
+ }
+ }
+
+ [Test]
+ public void ReadWriteExtendedCulture()
+ {
+ Guid id;
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var entity = new CultureInfoClass { ExtendedCulture = CultureInfo.GetCultureInfo("en-US-posix") };
+ s.Save(entity);
+ id = entity.Id;
+ t.Commit();
+ }
+
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var entity = s.Get(id);
+ Assert.That(entity.ExtendedCulture, Is.Not.Null);
+ // Under Windows, it is named en-US-posix, but en-US-POSIX under Linux.
+ Assert.That(entity.ExtendedCulture.Name, Is.EqualTo("en-US-posix").IgnoreCase);
+ Assert.That(entity.ExtendedCulture, Is.EqualTo(CultureInfo.GetCultureInfo("en-US-posix")));
+ t.Commit();
+ }
+ }
+
+ [Test]
+ public void WriteTooLongCulture()
+ {
+ if (Dialect is SQLiteDialect)
+ Assert.Ignore("SQLite has no length limited string type.");
+ using var s = OpenSession();
+ using var t = s.BeginTransaction();
+ var entity = new CultureInfoClass { BasicCulture = CultureInfo.GetCultureInfo("en-US-posix") };
+ s.Save(entity);
+ Assert.That(t.Commit, Throws.Exception);
+ }
+
+ [Test]
+ public void AutoDiscoverFromNetType()
+ {
+ // integration test to be 100% sure
+ var propertyType = Sfi.GetEntityPersister(typeof(CultureInfoClass).FullName).GetPropertyType(nameof(CultureInfoClass.BasicCulture));
+ Assert.That(propertyType, Is.InstanceOf());
+ }
+ }
+}
diff --git a/src/NHibernate.Test/TypesTest/DateTimeOffsetTypeFixture.cs b/src/NHibernate.Test/TypesTest/DateTimeOffsetTypeFixture.cs
index 0881a08e878..b38475b3a40 100644
--- a/src/NHibernate.Test/TypesTest/DateTimeOffsetTypeFixture.cs
+++ b/src/NHibernate.Test/TypesTest/DateTimeOffsetTypeFixture.cs
@@ -57,18 +57,6 @@ protected override void OnSetUp()
}
}
- protected override void OnTearDown()
- {
- base.OnTearDown();
-
- using (var s = OpenSession())
- using (var t = s.BeginTransaction())
- {
- s.CreateQuery("delete from DateTimeOffsetClass").ExecuteUpdate();
- t.Commit();
- }
- }
-
protected override void DropSchema()
{
(Sfi.ConnectionProvider.Driver as ClientDriverWithParamsStats)?.CleanUp();
@@ -382,6 +370,14 @@ public class DateTimeOffsetTypeWithScaleFixture : DateTimeOffsetTypeFixture
// The timestamp rounding in seeding does not account scale.
protected override bool RevisionCheck => false;
+ protected override void OnTearDown()
+ {
+ using var s = OpenSession();
+ using var t = s.BeginTransaction();
+ s.CreateQuery("delete DateTimeOffsetClass").ExecuteUpdate();
+ t.Commit();
+ }
+
[Test]
public void LowerDigitsAreIgnored()
{
diff --git a/src/NHibernate.Test/TypesTest/DecimalTypeFixture.cs b/src/NHibernate.Test/TypesTest/DecimalTypeFixture.cs
index 72561fc7008..4f839a39df8 100644
--- a/src/NHibernate.Test/TypesTest/DecimalTypeFixture.cs
+++ b/src/NHibernate.Test/TypesTest/DecimalTypeFixture.cs
@@ -45,18 +45,6 @@ protected override void OnSetUp()
}
}
- protected override void OnTearDown()
- {
- base.OnTearDown();
-
- using (var s = OpenSession())
- using (var t = s.BeginTransaction())
- {
- s.CreateQuery("delete from DecimalClass").ExecuteUpdate();
- t.Commit();
- }
- }
-
///
/// Test that two decimal fields that are exactly equal are returned
/// as Equal by the DecimalType.
diff --git a/src/NHibernate.Test/TypesTest/EnumStringTypeFixture.cs b/src/NHibernate.Test/TypesTest/EnumStringTypeFixture.cs
index ca3a07797df..9574983a65b 100644
--- a/src/NHibernate.Test/TypesTest/EnumStringTypeFixture.cs
+++ b/src/NHibernate.Test/TypesTest/EnumStringTypeFixture.cs
@@ -29,14 +29,6 @@ protected override void OnSetUp()
s.Close();
}
- protected override void OnTearDown()
- {
- ISession s = OpenSession();
- s.Delete("from EnumStringClass");
- s.Flush();
- s.Close();
- }
-
[Test]
public void ReadFromLoad()
{
diff --git a/src/NHibernate.Test/TypesTest/GenericEnumStringTypeFixture.cs b/src/NHibernate.Test/TypesTest/GenericEnumStringTypeFixture.cs
index ea64fc18a2c..1ff4f62313a 100644
--- a/src/NHibernate.Test/TypesTest/GenericEnumStringTypeFixture.cs
+++ b/src/NHibernate.Test/TypesTest/GenericEnumStringTypeFixture.cs
@@ -31,14 +31,6 @@ protected override void OnSetUp()
s.Close();
}
- protected override void OnTearDown()
- {
- ISession s = OpenSession();
- s.Delete("from GenericEnumStringClass");
- s.Flush();
- s.Close();
- }
-
[Test]
public void ReadFromLoad()
{
diff --git a/src/NHibernate.Test/TypesTest/StringTypeFixture.cs b/src/NHibernate.Test/TypesTest/StringTypeFixture.cs
index e544390e5ca..7a970476cfa 100644
--- a/src/NHibernate.Test/TypesTest/StringTypeFixture.cs
+++ b/src/NHibernate.Test/TypesTest/StringTypeFixture.cs
@@ -14,14 +14,6 @@ protected override string TypeName
get { return "String"; }
}
- protected override void OnTearDown()
- {
- using (var s = OpenSession())
- {
- s.CreateQuery("delete from StringClass").ExecuteUpdate();
- }
- }
-
[Test]
public void InsertNullValue()
{
diff --git a/src/NHibernate.Test/TypesTest/TimeAsTimeSpanTypeFixture.cs b/src/NHibernate.Test/TypesTest/TimeAsTimeSpanTypeFixture.cs
index 5c0e2c364f0..4684693f498 100644
--- a/src/NHibernate.Test/TypesTest/TimeAsTimeSpanTypeFixture.cs
+++ b/src/NHibernate.Test/TypesTest/TimeAsTimeSpanTypeFixture.cs
@@ -38,18 +38,6 @@ protected override string TypeName
get { return "TimeAsTimeSpan"; }
}
- protected override void OnTearDown()
- {
- base.OnTearDown();
-
- using (var s = OpenSession())
- using (var tx = s.BeginTransaction())
- {
- s.CreateQuery("delete from TimeAsTimeSpanClass").ExecuteUpdate();
- tx.Commit();
- }
- }
-
[Test]
public void PropertiesHasExpectedType()
{
diff --git a/src/NHibernate.Test/TypesTest/TypeFixtureBase.cs b/src/NHibernate.Test/TypesTest/TypeFixtureBase.cs
index 048a3670b2d..6f83d6f8127 100644
--- a/src/NHibernate.Test/TypesTest/TypeFixtureBase.cs
+++ b/src/NHibernate.Test/TypesTest/TypeFixtureBase.cs
@@ -1,6 +1,3 @@
-using System;
-using System.Collections;
-
namespace NHibernate.Test.TypesTest
{
///
@@ -13,20 +10,16 @@ public abstract class TypeFixtureBase : TestCase
{
protected abstract string TypeName { get; }
- protected override string MappingsAssembly
- {
- get { return "NHibernate.Test"; }
- }
+ protected override string MappingsAssembly => "NHibernate.Test";
+
+ protected override string[] Mappings => new[] { $"TypesTest.{TypeName}Class.hbm.xml" };
- protected override string[] Mappings
+ protected override void OnTearDown()
{
- get
- {
- return new string[]
- {
- String.Format("TypesTest.{0}Class.hbm.xml", TypeName)
- };
- }
+ using var s = OpenSession();
+ using var t = s.BeginTransaction();
+ s.CreateQuery($"delete {TypeName}Class").ExecuteUpdate();
+ t.Commit();
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate/Type/CultureInfoType.cs b/src/NHibernate/Type/CultureInfoType.cs
index 47daf666588..417e4b2ef89 100644
--- a/src/NHibernate/Type/CultureInfoType.cs
+++ b/src/NHibernate/Type/CultureInfoType.cs
@@ -8,12 +8,12 @@
namespace NHibernate.Type
{
///
- /// Maps a Property
+ /// Maps a Property
/// to a column.
///
///
/// CultureInfoType stores the culture name (not the Culture ID) of the
- /// in the DB.
+ /// in the DB.
///
[Serializable]
public partial class CultureInfoType : ImmutableType, ILiteralType
@@ -22,6 +22,10 @@ internal CultureInfoType() : base(new StringSqlType(5))
{
}
+ internal CultureInfoType(StringSqlType sqlType) : base(sqlType)
+ {
+ }
+
///
public override object Get(DbDataReader rs, int index, ISessionImplementor session)
{
diff --git a/src/NHibernate/Type/TypeFactory.cs b/src/NHibernate/Type/TypeFactory.cs
index 758353c48a4..0fd384d25c9 100644
--- a/src/NHibernate/Type/TypeFactory.cs
+++ b/src/NHibernate/Type/TypeFactory.cs
@@ -292,7 +292,9 @@ private static void RegisterDefaultNetTypes()
RegisterType(typeof (Boolean), NHibernateUtil.Boolean, new[] { "boolean", "bool" });
RegisterType(typeof (Byte), NHibernateUtil.Byte, new[]{ "byte"});
RegisterType(typeof (Char), NHibernateUtil.Character, new[] {"character", "char"});
- RegisterType(typeof (CultureInfo), NHibernateUtil.CultureInfo, new[]{ "locale"});
+ RegisterType(typeof (CultureInfo), NHibernateUtil.CultureInfo, new[] { "locale" },
+ l => GetType(NHibernateUtil.CultureInfo, l, len => new CultureInfoType(SqlTypeFactory.GetString(len))),
+ false);
RegisterType(typeof (DateTime), NHibernateUtil.DateTime, new[] { "datetime" },
s => GetType(NHibernateUtil.DateTime, s, scale => new DateTimeType(SqlTypeFactory.GetDateTime((byte)scale))),
false);
@@ -344,11 +346,10 @@ private static void RegisterDefaultNetTypes()
}
///
- /// Register other NO Default .NET type
+ /// Register types which are not a default for a .NET type.
///
///
- /// These type will be used only when the "type" attribute was is specified in the mapping.
- /// These are in here because needed to NO override default CLR types and be available in mappings
+ /// These types will be used only when the "type" attribute is specified in the mapping.
///
private static void RegisterBuiltInTypes()
{