Entity Framework Endpoint Multiplicity

database-design entity-framework

Frage

Angenommen, ich habe 3 Tische in einer Tennis-Anwendung (ohne relevante Informationen zu entfernen):

Wettbewerbe

Id (PK)

Streichhölzer

Id (PK)

CompId (FK)

Gerichtszuweisungen

CompId (PK), (FK)

Gerichtsnummer (PK)

MatchId (FK), (eindeutig)

Um das oben zu beschreiben: Ein Match besteht aus 2 Personen, die auf einem Platz gegeneinander Tennis spielen. Ein Wettbewerb besteht aus 0 bis vielen Spielen.

Eine Gerichtszuordnung vertritt ein Gericht während eines Wettkampfs (Während eines Einzelwettkampfes kann einem Spiel 0 oder 1 Spiel zugeteilt werden.) Ein Einzelspiel kann nur auf einer einzigen Gerichtsnummer gespielt werden und existiert nur in einem Einzelwettbewerb. (so bilden diese beiden Felder zusammen den Primärschlüssel für die Tabelle der Gerichtszuordnung)

Daher ist das Feld MatchId von CourtAssignment IMMER eindeutig oder null.

Wenn Sie jedoch ein EF-Modell aus meiner Datenbank generieren. Die Multiplizität für meine CourtAssignment-Navigationseigenschaft mit meinem Match ist *. Dies sollte 0..1 sein.

Ich verwende Visual Studio 2010 Beta 2 (mit .Net 4 Beta 2 und EF 4 Beta 2).

Ich hatte Beta 1 verwendet und konnte das * einfach auf 0..1 ändern. Nachdem ich nun jedoch zu Beta 2 umgestiegen bin, da es eine Go-Live-Lizenz hat (das Portieren der Aktualisierung meiner Lösung hat gut funktioniert, aber wenn ich meine Lösung von Grund auf neu schreibe, kann ich die Änderung auf 0..1 nicht manuell erstellen, ohne einen Fehler zu erhalten:

Fehler 113: Multiplizität ist in der Rolle 'CourtAssignments' in der Beziehung 'CourtAssignments_MatchId_FK_Matches_Id' nicht gültig. Da die Eigenschaften der abhängigen Rolle nicht die Haupteigenschaften sind, muss die Obergrenze der Multiplizität der abhängigen Rolle * sein.

Frage

Wie kann ich die Multiplizität auf 0..1 ändern? Ich weiß, dass dies machbar ist, da meine alte Lösung auf diese Weise weiterarbeitet. Ich kann anscheinend nicht mehr die Änderung im Designer vornehmen und mich in der edmx-Datei vollständig verlieren.

Hinweis: Ich weiß, dass die Änderung von MatchId in den Primärschlüssel die korrekte Multiplizität erzeugen würde, aber ich brauche meinen Primärschlüssel als Composite aus [CompId, CourtNumber], da ich in der Lage sein muss, umzuschalten, welches Match auf welchem Gericht liegt. Und offensichtlich funktioniert es nicht, den Primärschlüssel zu ändern.

Danke an alle, die helfen können!

Akzeptierte Antwort

Scott, dies ist nicht genau das gleiche Szenario wie Sie, aber es könnte helfen:

Eindeutige Schlüssel werden von Entity Framework nicht erkannt

Ich denke, es könnte verwandt sein - vielleicht haben Sie die FK-Cols im konzeptionellen Modell ausgesetzt? Es scheint, dass Sie in diesem Fall keine 1 bis 0..1 ausführen können.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum