RodH257
RodH257

Reputation: 3632

NHibernate mapping with forking inheritance model

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?

Upvotes: 0

Views: 232

Answers (1)

Diego Mijelshon
Diego Mijelshon

Reputation: 52745

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.

Upvotes: 1

Related Questions