Just committed a fix for this. You should just be able to update to the latest binaries from the site.
On Thu, Aug 20, 2009 at 1:43 PM, Everett Muniz <[email protected]>wrote: > :-) thanks James > > > On Thu, Aug 20, 2009 at 8:20 AM, James Gregory <[email protected]>wrote: > >> I think we can probably get a change in. Might have to be a bit more >> clever than just looking at Type.BaseType though :) >> >> >> On Thu, Aug 20, 2009 at 1:07 PM, Everett Muniz <[email protected]>wrote: >> >>> Thanks for the feedback James. I figured the issue was was the >>> inheritance layers I just wasn't sure whether it was by design or not. Is >>> the best course to stick with the old-style deprecated approach or do you >>> think a change is likely? I'd be willing to try to code the change if that >>> would be any help. >>> >>> >>> On Thu, Aug 20, 2009 at 3:38 AM, James Gregory >>> <[email protected]>wrote: >>> >>>> It's probably got something todo with the layers between, I'm pretty >>>> sure the SubclassMap only checks for direct parents when associating >>>> classes. >>>> >>>> >>>> On Thu, Aug 20, 2009 at 2:50 AM, Everett Muniz >>>> <[email protected]>wrote: >>>> >>>>> Using a pretty current PRE-RC1 set of binaries the follow works >>>>> brilliantly... >>>>> public class ColorSourceMapping : ClassMap<ColorSource> >>>>> { >>>>> public ColorSourceMapping() >>>>> { >>>>> Table("ColorSource"); >>>>> Id(typeof(Guid), "ID"); >>>>> JoinedSubClass<ConstantColorSource>("ID", s => >>>>> { >>>>> s.Map(x => x.Alpha); >>>>> s.Map(x => x.Blue); >>>>> s.Map(x => x.Green); >>>>> s.Map(x => x.Red); >>>>> }); >>>>> JoinedSubClass<SubstringColorSource>("ID", s => >>>>> { >>>>> s.Map(x => x.Length); >>>>> s.Map(x => x.Start); >>>>> s.References(x => x.RecordAccessor) >>>>> .Column("RecordAccessorID") >>>>> .Cascade.All(); >>>>> s.References(x => x.ColorMap) >>>>> .Column("ColorMapID"); >>>>> }); >>>>> } >>>>> } >>>>> >>>>> ConstantColorSource is a direct subclass of ColorSource >>>>> (ColorSource->ConstantColorSource). However, there are a few subclasses >>>>> between SubstringColorSource and ColorSource (ColorSource >>>>> ->..->..->SubstringColorSource). Here's how I tried to convert this to >>>>> the >>>>> subclass approach... >>>>> >>>>> public class SubstringColorSourceMapping : >>>>> FluentNHibernate.Mapping.SubclassMap<SubstringColorSource> >>>>> { >>>>> public SubstringColorSourceMapping() >>>>> { >>>>> KeyColumn("ID"); >>>>> Map(x => x.Length); >>>>> Map(x => x.Start); >>>>> References(x => x.RecordAccessor) >>>>> .Column("RecordAccessorID") >>>>> .Cascade.All(); >>>>> References(x => x.ColorMap) >>>>> .Column("ColorMapID"); >>>>> } >>>>> } >>>>> >>>>> public class ConstantColorSourceMapping : >>>>> FluentNHibernate.Mapping.SubclassMap<ConstantColorSource> >>>>> { >>>>> public ConstantColorSourceMapping() >>>>> { >>>>> KeyColumn("ID"); >>>>> Map(x => x.Alpha); >>>>> Map(x => x.Blue); >>>>> Map(x => x.Green); >>>>> Map(x => x.Red); >>>>> } >>>>> } >>>>> >>>>> public class ColorSourceMapping : ClassMap<ColorSource> >>>>> { >>>>> public ColorSourceMapping() >>>>> { >>>>> Table("ColorSource"); >>>>> Id(typeof(Guid), "ID"); >>>>> } >>>>> } >>>>> >>>>> The mapping file generated by the 3 classes above looks like this... >>>>> >>>>> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" >>>>> default-access="property" auto-import="true" default-cascade="none" >>>>> default-lazy="true"> >>>>> <class xmlns="urn:nhibernate-mapping-2.2" >>>>> name="GBS.VersiLabel.Core.Domain.Model.ColorSource, GBS.VersiLabel.Core, >>>>> Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" >>>>> table="ColorSource"> >>>>> <id type="System.Guid, mscorlib, Version=2.0.0.0, Culture=neutral, >>>>> PublicKeyToken=b77a5c561934e089"> >>>>> <column name="ID" /> >>>>> <generator class="guid.comb" /> >>>>> </id> >>>>> <joined-subclass >>>>> name="GBS.VersiLabel.Core.Domain.Model.ConstantColorSource, >>>>> GBS.VersiLabel.Core, Version=1.0.0.0, Culture=neutral, >>>>> PublicKeyToken=null" >>>>> table="`ConstantColorSource`"> >>>>> <key> >>>>> <column name="ID" /> >>>>> </key> >>>>> <property name="Alpha" type="System.Int32, mscorlib, >>>>> Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> >>>>> <column name="Alpha" /> >>>>> </property> >>>>> <property name="Blue" type="System.Int32, mscorlib, >>>>> Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> >>>>> <column name="Blue" /> >>>>> </property> >>>>> <property name="Green" type="System.Int32, mscorlib, >>>>> Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> >>>>> <column name="Green" /> >>>>> </property> >>>>> <property name="Red" type="System.Int32, mscorlib, >>>>> Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> >>>>> <column name="Red" /> >>>>> </property> >>>>> </joined-subclass> >>>>> </class> >>>>> </hibernate-mapping> >>>>> >>>>> You'll notice that the mapping has the ConstantColorSource but not >>>>> SubstringColorSource. >>>>> >>>>> I checked the wiki but it didn't seem to address the specific issue of >>>>> multi-level inheritance. >>>>> >>>>> Am I doing something wrong? >>>>> >>>>> >>>>> >>>> >>>> >>>> >>> >>> >>> >> >> >> > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
