2016-03-29 7 views
1
umgehen

Hier ist mein Problem.Wie NHibernate Mapping Join mit doppelten Spaltenname

Ich habe zwei Tabellen StudentSchoolAssociation und StudentSchoolAssociationExtension. Wie die Namen andeuten, ist man eine Erweiterung des anderen.

StudentSchoolAssociation ist eine Tabelle, wird nicht hinzugefügt, da es eine standardbasierte Tabelle ist, die ist, wo die Erweiterung Tisch kommt.

Das Problem, das ich habe, ist, dass die Basis StudentSchoolAssociation Tabelle a enthält Spalte für SchoolYear und die Erweiterungstabelle benötigt eine Spalte mit dem Namen SchoolYear für einen Fremdschlüssel Verweis auf eine Tabelle mit der Bezeichnung SchoolCalendar.

Dies schafft eine Situation, in der, wenn ich die

<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> 

ich eine doppelte Spalt Ausnahme in meiner NHibernate-Mapping-Datei beitreten hinzufügen bekommen.

Meine Frage ist, wenn jemand einen Best Practices Weg kennt, um mit diesem Problem zu arbeiten. Denken Sie daran, dass StudentSchoolAssociation ist Eisen gesperrt und kann nicht geändert werden und eine FK-Referenz auf die SchoolCalendar Tabelle wird auf der Erweiterungstabelle benötigt.

+0

Ich nehme an, dass SchoolYear auf der Erweiterungstabelle etwas anderes als SchoolYear auf der Basistabelle darstellt? Sonst würden Sie natürlich nicht beide brauchen. Angenommen, sie repräsentieren verschiedene Dinge, würde ich vorschlagen, den Namen der Spalte in der Tabelle Erweiterung zu ändern, wenn das möglich ist. –

Antwort

0

Ist es wirklich eine doppelte Spaltenausnahme? Ich wette, dass es stattdessen eine doppelte Eigenschaft Ausnahme ist.

Versuchen:

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

Natürlich in Ihrer erweiterten Entitätsdefinition fügen eine ExtendedSchoolYear Eigenschaft.

+0

Sie haben Recht, es ist eine doppelte Eigenschaft Ausnahme. Erinnert sich aus der Erinnerung. Gerade kam zurück, um meine Frage mit dem zu beantworten, was Sie nur mit einem anderen Namensattribut beantwortet haben. Du warst schneller als ich! Danke für deine Antwort. –