tenez compte du modèle exemple suivant:Comment créer une association 1x0..1 dans EF4 en utilisant Model-First?
- Personne a 0..1 utilisateur
- utilisateur a 1 personne
Tentative 1:
- I traîné une association de
Person
àUser
sur le concepteur de modèle. - Je fixe la cardinalité pour répondre à mes besoins (la valeur par défaut est 1xN)
- I généré le DDL du modèle
Problème:
- Le tableau sortie
User
a une colonnePerson_id
sans contrainte unique. C'est-à-dire que ce n'est pas une relation 1x1 car de nombreux utilisateurs peuvent référencer la même personne. Il doit y avoir quelque chose qui cloche
Tentative 2:
- Traîné une association d'une personne à l'utilisateur sur le concepteur de modèle.
- fixe la cardinalité pour répondre à mes besoins (la valeur par défaut est 1xN)
- Sélectionné l'association et cliqué sur le bouton
Referential Constraint
sur la fenêtre des propriétés pour modifier l'association - personne choisie pour être le principal et l'utilisateur d'être la personne à charge type de
- choisi le
Principal Key
être Id etDependent Property
être aussi Id (je l'ai lu quelque part que je devrais utiliser la même clé pour les deux types)
problème:
I exécuter ce code:
using (var context = new Locadora())
{
User user = new User();
user.PasswordHash = "hash";
user.Pessoa = new Person();
user.Pessoa.Nome = "André";
context.Usuários.AddObject(user);
context.SaveChanges();
}
- SaveChanges déclenche cette exception:
Une propriété dépendant d'une ReferentialConstraint est mappée sur une colonne générée en magasin. Colonne: 'Id'
Donc je suis hors de choix maintenant. Je ne sais pas comment implémenter une relation 1x1 ni une relation 1x0.1 dans Entity Framework.
Comment faire cela?
Vous m'avez sauvé plusieurs fois aujourd'hui. Je vous remercie –