Multiplicité de points finaux Entity Framework

database-design entity-framework

Question

Dites que j'ai 3 tables dans une application de tennis (en supprimant les informations non pertinentes):

Compétitions

Id (PK)

Allumettes

Id (PK)

CompId (FK)

Affectations de la Cour

CompId (PK), (FK)

Numéro de tribunal (PK)

MatchId (FK), (Unique)

Pour décrire ce qui précède: Un match consiste en 2 personnes jouant au tennis l'une contre l'autre sur un terrain. Une compétition est composée de 0 à plusieurs matchs.

Une assignation de terrain représente un terrain pendant une compétition (lors d'une compétition unique, 0 ou 1 match peut être attribué à un terrain). De plus, un seul match ne peut être joué que sur un seul numéro de terrain et n'existe que dans un seul concours. (ces deux champs constituent donc la clé primaire de la table CourtAssignment)

Ainsi, le champ MatchId de CourtAssignment sera TOUJOURS unique ou nul.

Cependant, lorsqu’un génère un modèle EF à partir de ma base de données. La multiplicité de ma propriété de navigation CourtAssignment avec mon match est *. Cela devrait être 0..1.

J'utilise Visual Studio 2010 beta 2 (avec .Net 4 beta 2 et EF 4 beta 2).

J'utilisais la version bêta 1 et pouvais simplement changer le * en 0..1. Cependant, maintenant que je suis passé à la version bêta 2 depuis qu'il dispose d'une licence go-live (le portage de la mise à niveau de ma solution a bien fonctionné, mais en réécrivant ma solution à partir de zéro, je ne suis pas en mesure de passer * à 0..1 sans recevoir d'erreur:

Erreur 113: La multiplicité n'est pas valide dans le rôle 'CourtAssignments' dans la relation 'CourtAssignments_MatchId_FK_Matches_Id'. Étant donné que les propriétés du rôle dépendant ne sont pas les propriétés de la clé, la limite supérieure de la multiplicité du rôle dépendant doit être *.

Question

Comment puis-je changer la multiplicité à 0..1? Je sais que c'est faisable puisque mon ancienne solution continue de fonctionner de cette façon. Je n'arrive plus à modifier le concepteur et à me perdre complètement dans le fichier edmx.

Remarque: je me rends compte que le fait de changer MatchId en clé primaire générerait la multiplicité correcte, mais j'ai besoin que ma clé primaire soit le composé de [CompId, CourtNumber], car je dois pouvoir changer de correspondance, quelle est la cour à la volée. Et évidemment, cela ne fonctionne pas en changeant la clé primaire.

Merci à quiconque peut fournir de l'aide!

Réponse acceptée

Scott, ce n'est pas exactement le même scénario que vous, mais cela pourrait aider:

Clés uniques non reconnues par Entity Framework

Je pense que cela peut être lié - peut-être avez-vous les colonnes FK exposées dans le modèle conceptuel? Il semble que vous ne puissiez pas faire un 1 à 0..1 si c'est le cas.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi