There's something of a fix
here<http://code.google.com/p/fluent-nhibernate/issues/detail?id=168>.
But it's not fixed proper yet. This issue needs to be addressed. You could
also create a custom type that maps an enum to an int and back without
flagging the object as dirty.
The ideal fix will be for Fluent to not map an enum property using the
GenericEnumMapper, and just map it to the type directly.

On Sat, Apr 25, 2009 at 2:26 PM, harrychou <[email protected]> wrote:

>
> Now I understands it. For mapping enum, you 'hard-code' your type to
> int, it will cause the object become dirty immediately.
>
> As explained in the following two posts:
>
>
> http://graysmatter.codivation.com/CommentView,guid,6fe1a7c3-1245-45b8-98f1-e4b369dcded9.aspx
>
> http://blog.benhartonline.com/post/2008/10/09/NHibernate-objects-dirty-on-load-with-nothing-set-in-between.aspx
>
> In my case, I am migrating my mapping from HBM to FluentNHibernate. In
> HBM, I can just ignore the type, and NHibernate will figure out the
> base type of my enum for me (which is int) ...
>
> Now in FluentNhibernate, if I didn't set CustomTypeIs, I am forced to
> map the column type of string .... which is not right ...
>
> Is there a way to work around this issue?
>
>
> On Apr 24, 3:00 pm, harrychou <[email protected]> wrote:
> > I have a problem. Whenever I add a mapping with .CustomTypeIs(typeof
> > (int)), NHiberate thinks my object is dirty and try to update the
> > object for me. ...
> >
> > This is causing performance problem since FindAll call will cause
> > massive update statements ....
> >
> > The reason I use .CustomTypeIs(typeof(int)) is that I want my enum to
> > map to integer ...
> >
> > My mapping is like the following, whenever I uncommnet the last row
> > (Map(x => x.ContractType).CustomTypeIs(typeof(int));)  I didn't get
> > the extra update statement.  ....
> >
> >         public ClientMap()
> >         {
> >             Id(x => x.ID, "ClientID").GeneratedBy.GuidComb();
> >             Version(x => x.Version).SetAttribute("unsaved-value",
> > "-1");
> >             Map(x => x.LastUpdatedDateTime);
> >             Map(x => x.LastUpdatedUser);
> >             Map(x => x.CreatedDateTime);
> >             Map(x => x.CreatedUser);
> >
> >             Map(x => x.SharePointID);
> >             Map(x => x.BMC_ID);
> >
> >             Map(x => x.ClientName);
> >             Map(x => x.CompanyFullName);
> >             Map(x => x.AlternativeNames);
> >             Map(x => x.Acronym);
> >             HasMany(x => x._CompanyAddress).Cascade.AllDeleteOrphan();
> >             Map(x => x.RenewalMonth);
> >             Map(x => x.Platform);
> >             Map(x => x.IsActive);
> >             Map(x => x.IsCareFirstConnectClient);
> >             Map(x => x.InfoBoxEmail);
> >
> >             HasMany(x =>
> > x._ClientRoleAssignments).Cascade.AllDeleteOrphan();
> >
> >             HasMany(x => x._ClientContacts).Cascade.AllDeleteOrphan();
> >
> >             Map(x => x.ContractType).CustomTypeIs(typeof(int));
> >    }
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Fluent NHibernate" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/fluent-nhibernate?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to