GeneratorBuilder.Identity() unnecessarily restricting to integral types
GeneratorBuilder.Indentity() internalls calls EnsureIntegralIdenityType() to enforce that the identifier's type be integral. However, NHibernate itself doesn't have that restriction.
In my case, I'm using a custom NHibernate IUserType for my identifier:
Id(x => x.Id)
.GeneratedBy.Identity()
.CustomType<BaseIdUserType<FooId>>()
.UnsavedValue(0);
Fluent NHibernate throws the exception from EnsureIntegralIdenityType(). However, if I cheat and work-around Fluent NHibernate's restriction, everything works just fine:
Id(x => x.Id)
.GeneratedBy.Custom("identity")
.CustomType<BaseIdUserType<FooId>>()
.UnsavedValue(0);
In my case, my custom type is, in fact, convertible to an int, although I'm not sure that NHibernate itself would care if I instead were convertible to a GUID, or other supported type.
I'm not sure I understand the spirit of why Fluent NHibernate goes this far in trying to enforce restrictions.