Thanks Jason, that means however that I need to store everything in the
Person table which is what I was trying to avoid. Don't get me wrong if
anything has to go it's the table structure. Guess I'll bite the bullet for
now and come back later.

On Sun, Aug 23, 2009 at 7:11 PM, Jason Dentler <[email protected]>wrote:

> Unfortunately, I've done something similar at work recently.
>     public class PersonMapping : ClassMap<Person>
>     {
>         public PersonMapping()
>         {
>             Id(x => x.ID).GeneratedBy.GuidComb();
>             Map(x => x.Name).Not.Nullable();
>             JoinedSubClass<BoardMember>("ID", sm => MapBoardMember(sm));
>         }
>
>         private void MapBoardMember(JoinedSubClassPart<BoardMember> bm)
>         {
>             bm.Map(x => x.Type).Not.Nullable();
>             bm.JoinedSubClass<Chairman>("ID", sm => MapChairman(sm));
>         }
>
>         private void MapChairman(JoinedSubClassPart<Chairman> cm)
>         {
>             cm.Map(x => x.SomeOtherProperty);
>         }
>
>     }
>
>
>
>
> On Sun, Aug 23, 2009 at 11:59 AM, Tuna Toksoz <[email protected]> wrote:
>
>> And I know the post is a bit old.
>>
>> Tuna Toksöz
>> Eternal sunshine of the open source mind.
>>
>> http://devlicio.us/blogs/tuna_toksoz
>> http://tunatoksoz.com
>> http://twitter.com/tehlike
>>
>>
>>
>>
>> On Sun, Aug 23, 2009 at 7:54 PM, Tuna Toksoz <[email protected]> wrote:
>>
>>>
>>>    1. DiscriminateSubClassesOnColumn("Type")
>>>    2.   .SubClass<B>(m =>
>>>    3.   {
>>>    4.     m.Map(x => x.BProperty);
>>>    5.     m.SubClass<C>(m =>
>>>    6.     {
>>>    7.       m.Map(x => x.CProperty);
>>>    8.     });
>>>    9.   });
>>>
>>> from
>>>
>>> http://blog.jagregory.com/2009/01/05/fluent-nhibernate-subclass-syntax-changes/
>>>
>>> <http://blog.jagregory.com/2009/01/05/fluent-nhibernate-subclass-syntax-changes/>Does
>>> that help?
>>>
>>>
>>> Tuna Toksöz
>>> Eternal sunshine of the open source mind.
>>>
>>> http://devlicio.us/blogs/tuna_toksoz
>>> http://tunatoksoz.com
>>> http://twitter.com/tehlike
>>>
>>>
>>>
>>>
>>> On Sun, Aug 23, 2009 at 7:45 PM, Mikael Henriksson <[email protected]
>>> > wrote:
>>>
>>>> I tried but they are clueless :) Seriously though I was suggested it
>>>> "might" be possible by Paul from fluent and to ask here. He suggested it
>>>> might be "achievable" through join.
>>>>
>>>>
>>>> On Sun, Aug 23, 2009 at 6:38 PM, Tuna Toksoz <[email protected]> wrote:
>>>>
>>>>> Perhaps you should ask in Fluent nhibernate group <
>>>>> [email protected]>,
>>>>>
>>>>> Tuna Toksöz
>>>>> Eternal sunshine of the open source mind.
>>>>>
>>>>> http://devlicio.us/blogs/tuna_toksoz
>>>>> http://tunatoksoz.com
>>>>> http://twitter.com/tehlike
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Sun, Aug 23, 2009 at 6:54 PM, Mikael Henriksson <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> I'll start with some code!
>>>>>>
>>>>>>     public class Person
>>>>>>     {
>>>>>>         public virtual int Id { get; private set; }
>>>>>>         public virtual string FirstName { get; set; }
>>>>>>         public virtual string LastName { get; set; }
>>>>>>     }
>>>>>>
>>>>>>      public class BoardMember : Person
>>>>>>     {
>>>>>>         public virtual Board Board { get; set; }
>>>>>>         public virtual MemberTypes Type { get; set; }
>>>>>>     }
>>>>>>
>>>>>>     public class Chairman : BoardMember
>>>>>>     {
>>>>>>
>>>>>>     }
>>>>>>
>>>>>> I want to inherit from person because a *board member *is a person.
>>>>>> but I have different types of board members that I want to discriminate 
>>>>>> on.
>>>>>> For instance Chairman should inherit from BoardMember. I know this might 
>>>>>> not
>>>>>> be the best solution in this specific domain. I am mainly curious of if 
>>>>>> it
>>>>>> is possible to do since I see a couple of problems:
>>>>>>
>>>>>>    1. Subclassing a class that is allready a subclass
>>>>>>    2. Self referencing tables in a many to many situation
>>>>>>
>>>>>> My original attempt looks like the following (using fluent NH):
>>>>>>
>>>>>>  public class PersonMap : ClassMap<Person>
>>>>>> {
>>>>>> public PersonMap()
>>>>>>  {
>>>>>> Table("person");
>>>>>> Id(x => x.Id, "person_id");
>>>>>>  Map(x => x.FirstName, "person_first_name");
>>>>>> Map(x => x.LastName, "person_last_name");
>>>>>>  }
>>>>>> }
>>>>>>
>>>>>>     public class BoardMemberMap : SubclassMap<BoardMember>
>>>>>>     {
>>>>>>         public BoardMemberMap()
>>>>>>         {
>>>>>>             Table("board_member");
>>>>>>             Map(x => x.Type).Column("board_member_type");
>>>>>>             DiscriminateSubclassOnColumn("board_member_type");
>>>>>>         }
>>>>>>     }
>>>>>>
>>>>>>     public class Chairman : SubclassMap<Chairman>
>>>>>>     {
>>>>>>         public Chairman()
>>>>>>         {
>>>>>>
>>>>>>         }
>>>>>>     }
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"nhusers" 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/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to