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

Reply via email to