2012-06-29 3 views
0

EDIT:MVC3 - collection virtuelle automatique (SaveChanges de base de données)

J'ai trouvé le problème de savoir pourquoi il ne voit pas les changements j'ai changé l'objet qui est lié avec ModelBinder. Dans ce cas, il n'est pas suivi par le contexte.

Bonjour

J'ai un problème avec ICollections virtuels dans ma demande. Est-il correct que EF sauvegarde automatiquement les modifications que vous apportez aux entités? Par exemple, si j'ajoute un élément à une liste (ajouter un joueur à une équipe) cela fonctionnera sans utiliser de dépôt et de base de données pour l'enregistrer dans la base de données?

J'ai quelque chose comme ça

public int RayonId { get; set; } 
    public String Rayonnaam { get; set; } 
    public virtual ICollection<Duivenmelker> Duivenmelkers { get; set; } 

    public Rayon() 
    { 
      Duivenmelkers = new List<Duivenmelker>(); 

    }  


    public void AddMelker(Duivenmelker m) 

    { 
     Duivenmelkers.Add(m); 
    } 

Le code ci-dessus modifie la liste que localement. Mais n'enregistre pas les modifications apportées à la base de données. Je peux appeler un référentiel pour ajouter un nouvel objet directement à la base de données, mais ce n'est pas la bonne façon de procéder.

Qu'est-ce qui pourrait éventuellement être mauvais et qui ne fonctionne pas? * *

savechanges retour 0 (aucun changement ne pense fait)

J'ai maintenant ajouté

  c.Vluchten.Attach(v); 
      c.Entry(v).State = EntityState.Added; 

Cela fonctionne apparemment, encore je ne sais pas pourquoi l'EF ne voit pas les changements sans lui dire explicitement

+0

Si vous avez trouvé le problème et une solution pour ** cette question ** écrivez-nous en réponse et acceptez votre propre réponse. * "Maintenant une nouvelle question ..." * devrait vraiment être une ** nouvelle question **. – Slauma

Répondre

1

N'utilisez pas l'objet lié de votre modelbinder, recherchez plutôt l'objet attaché au contexte et apportez les modifications à cet endroit. (L'objet lié n'est pas suivi par EntityChangetracker)

0

Vous devez appeler SaveChanges()

+0

J'ai essayé cela dans le contrôleur ainsi que la classe elle-même. context.saveChanges() etc. Il n'ajoute pas à ma base de données. J'utilise objectcontextperhttprequest donc il n'est pas possible que j'appelle cela des changements dans le mauvais contexte, n'est-ce pas? Il ne donne aucune erreur, quand j'appelle entry.state sur l'objet que je reçois (problème IEntitychangetracker) –

Questions connexes