2

J'ai essayé:Comment ajouter/supprimer une relation many-to-many avec entity framework par clé d'entité?

using (Entities e = new Entities()) 
{ 
    EntityKey key = new EntityKey("Entities.Users", "UserId", 20); 
    User user = new User { EntityKey = key}; 
    Role role = e.Roles.FirstOrDefault(); 
    //role.Users.Attach(user); //throws (when uncommented...) InvalidOperationException: 
    //The object being attached to the source object is not attached to the same ObjectContext as the source object. 
    role.Users.Add(user); //throws InvalidOperationException too: 
    //The object cannot be added to the ObjectStateManager because it already has an EntityKey. Use ObjectContext.Attach to attach an object that has an existing key. 
    e.SaveChanges(); 
} 

Lorsque vous essayez d'utiliser Supprimer() sans appeler avant d'attacher aucune exception est levée, mais pas supprimé relation.

+0

est "entités" dans votre exemple de type System.Data.Entity.DbContext? – jaybro

+0

Après la recherche: Si "AttachTo" est utilisé, "Entities" doit être un ObjectContext. – jaybro

+0

LOL probablement, c'est un ancien article ... tag ajouté – Shimmy

Répondre

3

Essayez quelque chose comme ceci:

User user = new User {UserId = 20}; 
e.AttachTo("Users", user); 
Role role = e.Roles.FirstOrDefault(); 
role.Users.Add(user); 
e.SaveChanges(); 

Je trouve beaucoup plus facile de travailler avec des entités Stub (comme l'utilisateur ci-dessus) plutôt que EntityKeys.

Voir ce blog post pour plus d'informations sur les techniques Stub Entity.

Hope this helps

Alex

Questions connexes