2016-03-29 8 views
1

これは私の問題です。重複する列名でNHibernateマッピング結合を処理する方法

私は2つのテーブルStudentSchoolAssociationStudentSchoolAssociationExtensionを持っています。名前が意味するように、一方は他方の拡張です。

StudentSchoolAssociationは、拡張テーブルの出番である標準ベースの表、であるように追加することはできませんテーブルです。

私が持っている問題ベースStudentSchoolAssociation表が含まれていることですSchoolYearの列には、という名前の列が必要です。SchoolCalendarという表への外部キーの参照は、SchoolYearです。

これは私が

私の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参照が拡張テーブルに必要であることを覚えておいてください。

+0

ExtensionテーブルのSchoolYearは、基本テーブルのSchoolYearとは異なるものを表していますか?さもなければ、あなたはもちろん両方を必要としません。彼らが異なることを表しているとすれば、拡張が可能であれば、Extensionテーブルの列の名前を変更することをお勧めします。 –

答えて

0

本当に複写列の例外ですか?私は代わりに重複したプロパティの例外だと思う。

試してみてください。もちろん

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

は、あなたの拡張エンティティ定義でExtendedSchoolYearプロパティを追加します。

+0

これは重複したプロパティの例外です。記憶から想起していた。 ちょうど別の名前属性であなたが答えたもので私の質問に答えるために戻ってきました。あなたは私にそれを打つ!ご回答有難うございます。 –

関連する問題