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 -~----------~----~----~----~------~----~------~--~---
