fluent-nhibernate icon indicating copy to clipboard operation
fluent-nhibernate copied to clipboard

GeneratorBuilder.Identity() unnecessarily restricting to integral types

Open Trinition opened this issue 12 years ago • 0 comments

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.

Trinition avatar Jun 19 '13 19:06 Trinition