Thanks James! On Mon, Aug 24, 2009 at 6:40 AM, James Gregory <[email protected]>wrote:
> 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 -~----------~----~----~----~------~----~------~--~---
