2011-04-21 5 views
2

J'ai défini une relation, c'est-à-dire qu'un module peut contenir plusieurs cours.Entity Framework 4 - Ajout d'un modèle existant à une association

J'ai une interface qui vous permet d'ajouter un cap au module; J'ai essayé le code ci-dessous, mais cela se traduit par un nouveau module en cours de création dans le tableau des modules, puis ajoutés au cours

int moduleID = viewModel.moduleID; 
course.Modules.Add(new Module { ID = moduleID }) 
SaveChanges(); 

Quelle devrait être la bonne façon? Editer: Le débogage avec des points d'arrêt montre que l'entier moduleID est correct.

Répondre

4

Vous pouvez essayer ceci:

var module = new Module { ID = viewModel.moduleID }; 
// Attach first so that context doesn't track module as a new one 
context.Modules.Attach(module); 
// Now make connection to attached module 
course.Modules.Add(module); 
context.SaveChanges(); 

Comme vous pouvez le voir, je ne l'ai pas besoin de charger le module de base de données pour établir une connexion. Cela fonctionne assez bien pour les relations plusieurs-à-plusieurs, mais peut être plus compliqué dans le cas de relations un-à-plusieurs.

1

Vous créez un nouveau module, ce qui signifie que le comportement que vous obtenez est normal. Ce que vous devez faire est, obtenir l'objet Module qui correspond au moduleID de votre contexte de données, puis l'ajouter à votre cours.

int moduleID = viewModel.moduleID; 
var module = context.Modules.FirstOrDefault(m => m.ID == moduleID); 
course.Modules.Add(module) 
SaveChanges(); 

Hope this helps :)