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