NHibernate 2.x复合键映射,两个外键和存储过程问题

时间:2011-10-28 14:05:36

标签: nhibernate stored-procedures c#-4.0 nhibernate-mapping

我正在尝试使用NHibernate 2.0将2个现有数据模型的数据转换为单个通用模型。我目前正在尝试为两个现有数据库中的一个创建映射。

Table Relationships

当患者只有一台设备时,可能会有多次遭遇。我正在尝试为每次遭遇提取数据。我想基于单个遭遇和设备组合从四个子表中的每一个获取属性。我现在正在尝试编写映射以从四个子表中获取我的属性。 (我编写了一个存储过程,它获取了所有属性并将@deviceID和@encounterID作为参数,认为这可能更容易,但我不清楚如何使其工作。)

我创建了一个类ProgrammingContainer来获取所有这些数据,因此我可以将它输出到新模型中的ProgrammingEncounter表中。这是一个问题:如何设置映射,因此我可以将内容放入ProgrammingContainer对象中,该对象根据复合键从子表中获取数据?在这种情况下,我的存储过程是否接近愚蠢?我似乎无法根据我的复合键情况找到一个可行的示例。

这是我当前的映射文件。首先是Encounter对象。

                

<property name="EncounterDate" column="event_date" type="datetime" />
<property name="EncounterStatus" column="event_status" type="AnsiString" />
<property name="PatientID" column="patient_id" type="int" />

<many-to-one name="programmingContainer" class="ProgrammingContainer" column="event_id" lazy="false" fetch="join" access="field"/>

ProgrammingContainer:

<class name="ProgrammingContainer" table="event" where="" dynamic-update="true" dynamic-insert="true">
<composite-id>
  <key-property name="EncounterID" column="event_id" type="Int32"/>
  <key-property name="PatientID" column="patient_id" type="Int32"/>
</composite-id>

<bag name="devices" cascade="all" access="field">
  <key column="patient_id"/>
  <one-to-many class="Device"/>
</bag >

<property name="DeviceID" column="defibrillator_id" type="Int32" />
<many-to-one name="icdProgrammingData" class="IcdProgrammingData" column="patient_id" lazy="false" access="field"/>

IcdProgrammingData(调用存储过程的子对象)

<hibernate-mapping>

                       

<property name="BatteryChargeSeconds" column="charge_time" type="AnsiString" />
<property name="AutoCapFrequency" column="autocap_frequency" type="AnsiString" />
<property name="LastCapacitorFormDate" column="last_capacitor_form" type="DateTime" />

            

                

(我不知道如何让sql-query映射显示出来)

0 个答案:

没有答案