如何使用重复的列名处理NHibernate映射连接

时间:2016-03-29 15:22:31

标签: c# xml nhibernate

这是我的问题。

我有两个表 StudentSchoolAssociation StudentSchoolAssociationExtension 。顾名思义,一个是另一个的延伸。

StudentSchoolAssociation 是一个无法添加的表,因为它是基于标准的表,这是扩展表的来源。

我遇到的问题是基本 StudentSchoolAssociation 表包含 SchoolYear 的列,扩展表需要一个名为 SchoolYear 的列外键引用一个名为 SchoolCalendar 的表。

这会产生一种情况,即我在NHibernate映射文件中添加连接

<join table="StudentSchoolAssociationExtension" schema="extension">
  <key>
    <column name="EntryDate" />
    <column name="SchoolId" />
    <column name="StudentUSI" />
  </key>
  <property name="HomelessMcKinneyServedIndicator" />
  <property name="HomelessUnaccompaniedIndicator" />
  <property name="SESAppliedIndicator" />
  <property name="SESReceivingIndicator" />
  <property name="CompletionDocumentDescriptorId" />
  <property name="CompletionDocumentPeriodDescriptorId" />
  <property name="TotalInstructionalMins" />
  <property name="StudentStandardDayEffectiveDate" type="date" />
  <property name="CompletionDocumentDate" type="date" />
  <property name="SchoolCalendarNumber" />
  <property name="LocalEducationAgencyId" />
  <property name="DistrictCalendarNumber" />
  <property name="SchoolYear" type="short" />
</join>

我收到了重复的列异常。

我的问题是,是否有人知道处理此问题的最佳做法。请注意, StudentSchoolAssociation 是铁锁定的,不能更改,扩展表上需要对 SchoolCalendar 表的FK引用。

1 个答案:

答案 0 :(得分:0)

它真的是一个重复的列例外吗?我敢打赌它是一个重复的属性异常。

尝试:

<join table="StudentSchoolAssociationExtension" schema="extension">
  ...
  <property name="ExtendedSchoolYear" column="SchoolYear" type="short" />
</join>

当然,在您的扩展实体定义中添加ExtendedSchoolYear属性。