What I did in some cases whas to make a Base class map like:
class Person<T> : ClassMap<T>
{
}

and the subclasses inherit from Person<T> instead of ClassMap<T> That
whay you still have the power of OO subclasses,
but the database see it as two different tables...

(not sure if this is what you want though...)

David Perfors.

On Aug 19, 9:00 am, Mikael Henriksson <[email protected]> wrote:
> Gaaah all these limitations everywhere :)
> Not that I care about the database it's just frustrating that I can't make
> it perfect!! Not saying it's your fault James, just saying that's all. I'll
> try to make it work in a different manner. What I was actually trying to
> accomplish was to not have to repeat myself too much. So this would be my
> next step. Can't I just use the same ClassMap for these guys?.
> On Tue, Aug 18, 2009 at 9:56 PM, James Gregory <[email protected]>wrote:
>
> > I assume what you're trying to do is have a Person table, and a
> > BoardMembers table, with BoardMember being a joined-subclass, and then any
> > derived BoardMember's being discriminated...?
>
> > If that is the case, then I'm afraid you're out of
> > luck. Unless somebody knows otherwise, I'm pretty sure you can't do that 
> > with NHibernate. You'll need them to all be in the same table and call 
> > DiscriminateSubclassesOnColumn in your ClassMap.
>
> > On Tue, Aug 18, 2009 at 8:42 PM, Mikael Henriksson 
> > <[email protected]>wrote:
>
> >> I have many classes but only three is important for what I am trying to
> >> do.
> >> Let's say I have a person:
> >>     public class Person
> >>     {
> >>         public virtual int Id { get; private set; }
> >>         public virtual string FirstName { get; set; }
> >>         public virtual string LastName { get; set; }
> >>     }
>
> >> Now 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 that inherits from BoardMember:
> >>     public class BoardMember : Person
> >>     {
> >>         public virtual Board Board { get; set; }
> >>         public virtual MemberTypes Type { get; set; }
> >>     }
>
> >>     public class Chairman : BoardMember
> >>     {
>
> >>     }
>
> >> Now I thought I would do something like:
> >> 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()
> >>         {
>
> >>         }
> >>     }
>
> >> However DiscriminateSubclassOnColumn is not available within SubclassMap
> >> so how do I work around it? :)
--~--~---------~--~----~------------~-------~--~----~
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