2010-06-17 3 views
1

En utilisant MVVM et EF ... J'ai une liaison de grille de données vers un modèle de vue (en utilisant ObservableCollection). Le modèle de vue possède une commande save qui appelle simplement la commande SaveChanges du contexte de données. Cependant, lorsqu'un utilisateur ajoute une nouvelle ligne à la grille de données, la nouvelle entité est détachée. Y at-il un moyen facile de l'attacher automatiquement quand il est créé. À l'heure actuelle, je vais avoir à faire dans la commande Enregistrer de mon point de vue modèle et il semble un peu maladroit:Meilleur moyen d'attacher une ligne de datagrid à EF

 foreach (var dataItem in _DataList) // where _DataList is the ObservableCollection 
     { 
      if (dataItem.EntityState == EntityState.Detached) 
      { 
       _DataContext.AddToTestTables(dataItem); 
      } 
     } 
     _DataContext.SaveChanges(); 
+0

Pourquoi ce code de sauvegarde n'est-il pas dans votre modèle au lieu de votre ViewModel? –

Répondre

0

Dans ce cas, la solution doit être à « observer » votre ObservableCollection pour tous les nouveaux ajouts et joindre nouvelles entités une fois ajoutées à la collection.

Et Matt Casto a raison, vous ne devriez pas avoir une méthode Save dans votre ViewModel, qui devrait être dans votre Model ou ModelRepository selon le modèle que vous utilisez pour Data Access Layer.

+0

Vous ne savez pas ce que vous entendez par "observer"? – AKoran

+0

Enregistrez-vous à l'événement CollectionChanged. Il est levé chaque fois que le nombre d'éléments de la collection change. – decyclone

Questions connexes