views:

34

answers:

1

I'm just starting out with NHibernate and am trying to do a mapping for my model. (this is a model-first, TDD approach, just creating the database now)

My Class hierachy is something like :

My Class Hierachy

I'm trying to work out how to map this now using a mapping xml file?

This is my table and what I want them to map to

QuestionId - Int - [Question.Id]

PmqccFormId - Int - [Question.PmqccForm.Id]

InputtedAnswer - Int - [NormalQuestion.InputtedAnswer or JobVelocityQuestion.InputtedAnswer - they are both enums that will be converted to/from ints, can separate these into separate columns if need be]

ResponsibleStaffId -Int - [PiAlertQuestion.ResponsibleStaffMember.Id]

Explanation - varchar - [Question.Explanation]

QuestionType - varchar - [Discriminator]

I'm not sure how to map this given it forks a a bit. There are a heap more 'Question' objects that all inherit from YesNoQuestion or NormalQuestion but don't add anymore properties, just methods implementations.

I'm guessing I have a for the Question base class and then have ones under that? the tricky bit is the JobVelocityQuestion inheriting from Question. Can anyone point me in the right direction?

+1  A: 

This should get you started:

<class name="Question">
  ...
  <discriminator column="QuestionType"/>
  <subclass name="JobVelocityQuestion">
    <property name="InputtedAnswer"/>
  </subclass>
  <subclass name="NormalQuestion">
    <property name="InputtedAnswer"/>
    <subclass name="AsConsQuestion"/>
    ...
  </subclass>

I made many assumptions, but it should work. Feel free to ask further.

Diego Mijelshon
Thanks, I keep forgetting that NHibernate has the power to figure all this stuff out, its great you can just tell it the column for discriminator and it adds the class for you!
RodH257