Frage

Dies ist mehr oder weniger eine allgemeine Frage und nicht eine bestimmte ORM oder Sprache insbesondere zu einer bestimmten Sprache: Diese Frage kommt unabhängig von Ihrer ORM -Präferenz.

Bei der Zuordnung einer vielen zu viele Beziehung können die Vermittlertabelle verschleiern oder die Vermittlertabelle zu einem Teil Ihres Modells machen. In dem Fall, dass die Vermittlertabelle wertvolle Daten über die Beziehung hinausgeht, wie gehen Sie mit der Zuordnung um?

Betrachten Sie die folgenden Tabellen:

CaseWorker (id, first_name, last_name)
CaseWorkerCases (case_worker_id, case_id, date_opened, date_closed)
Case (id, client_id, field_a, field_b)

Als Programmierer würde ich es wirklich lieber tun können:

CaseWorker.Cases

als

CaseWorker.CaseWorkerCases.Cases

Einerseits enthält die Tabelle Caseworkercasen nützliche Daten, und das Verbergen der Vermittlertabelle macht den Zugriff auf diese Daten weniger als bequem. Andererseits, wenn das Navigieren durch die Vermittlertabelle navigieren muss, erscheinen die gemeinsame Aufgabe, auf Fälle zuzugreifen, unangenehm.

Ich werde eine Lösung bestehen, um die Zwischentabelle im Modell freizulegen und dann dem Fallarbeitsobjekt eine Wrapper -Eigenschaft zu geben. Etwas wie:

public IEnumerable<Case> Cases
{
    get{return (from caseWorkerCase in this.CaseWorkerCases
                select caseWorkerCase.Case);}
}

Aber das scheint auch falsch zu sein.

War es hilfreich?

Lösung

Ich glaube nicht, dass Ihre Problemumgehung falsch ist. Die Komplexität dieser Modelle muss codiert werden irgendwo.

Ich habe einen Blog -Beitrag über dieses genaue Thema: Viele zu viele Beziehungen zu Eigenschaften

Andere Tipps

Ich betrachte viele zu viele Zuordnungen nur als eine notationale Abkürzung für zwei Eins-zu-Viele-Mappings mit der Zwischentabelle, wie Sie es nennen, und ermöglicht die Vereinfachung der Beziehungen. Es funktioniert nur, wo die Beziehungen keine eigenen Eigenschaften haben. Da sich das Verständnis der jeweiligen Domäne jedoch verbessert, stelle ich normalerweise fest, dass viele zu viele Zuordnungen normalerweise abgebaut werden müssen, um die Anhängen von Attributen zu ermöglichen. Mein üblicher Ansatz heutzutage ist es also, zu Beginn immer einfach Eins-zu-viele-Mappings zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top