2010-09-23 2 views
3

OK, j'ai 3 tables, appelez:Entity Framework - ajouter à se joindre à seules valeurs clés étrangères

Personne

  • personID
  • Nom

magasin

  • StoreID
  • Nom

PersonStore

  • personID
  • StoreID

Maintenant, j'ai une forme qui vous permet d'ajouter des magasins à une personne. Cependant, je récupère l'identifiant du magasin depuis le formulaire. Je ne veux pas vraiment faire une requête pour obtenir l'objet de magasin à partir d'Entity Framework. Je veux juste ajouter à la table en utilisant le StoreID et l'objet Person que j'ai.

Répondre

5

Par défaut dans EF cette table de jointure n'apparaît pas comme une entité plutôt que vous aurez un plusieurs à plusieurs qui apparaissent comme deux propriétés de navigation

-à-dire

Person.Stores 
Store.People 

Si vous vouloir construire une relation de plusieurs à plusieurs sans récupérer les entités, puis attacher des entités de bout est le meilleur moyen.

var person = // you already have the person 
var store = new Store{StoreID = 5} // you know the storeID 

ctx.AttachTo("Stores", store); 
ctx.AttachTo("People", person); // assuming the person isn't already attached 
person.Stores.Add(store); 
ctx.SaveChanges(); 

Le seul problème avec ce code est-il échouera si la relation existe déjà, vous devez donc être sûr que vous créez une nouvelle relation

Pour en savoir plus sur l'utilisation des entités Stub comme cette vérification dehors my post. J'espère que cela aide.

Alex

Modifier de OP:

Depuis que je suis en utilisant EF4, j'ai utilisé le code suivant pour supprimer la chaîne de l'attacher (grâce à la pointe 13 du lien).

var person = // you already have the person 
var store = new Store{StoreID = 5} // you know the storeID 

ctx.Stores.Attach(store); 
person.Stores.Add(store); 
ctx.SaveChanges(); 
+0

Vous êtes une bouée de sauvetage! Attacher et Supprimer correspondant; brillant! –

+0

c'est génial. Merci d'avoir partagé!! –

Questions connexes