Отображение составного ключа NHibernate 2.x, два внешних ключа и проблема хранимой процедуры - PullRequest
1 голос
/ 28 октября 2011

Я пытаюсь получить данные из двух существующих моделей данных в единую общую модель с использованием NHibernate 2.0.В настоящее время я пытаюсь создать сопоставления для одной из двух существующих баз данных.

Table Relationships

Может быть несколько встреч, когда у пациента есть одно устройство.Я пытаюсь извлечь данные для каждой встречи.Я хочу получить атрибуты из каждой из четырех дочерних таблиц, основанные на одной комбинации столкновения и устройства.Сейчас я пытаюсь написать сопоставления, чтобы получить свои атрибуты из четырех дочерних таблиц.(Я написал хранимый процесс, который получает все атрибуты и принимает @deviceID и @encounterID в качестве параметров, думая, что это может быть проще, но мне не ясно, как заставить это работать.)

Iсоздал класс 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-запроса для отображения)

...