2010-10-19 5 views
0

Dites que j'ai une CheckBoxList sur une page reflétant les données de la table. Un utilisateur désactive les éléments précédemment cochés et vérifie ceux qui n'ont pas été cochés. Je souhaite mettre à jour la base de données avec LINQ2EF afin que les enregistrements restants correspondent aux nouveaux éléments sélectionnés. En d'autres termes, lorsque la page est soumise, j'obtiens un String[] d'ID vérifiés. Il me faut ensuite mettre à jour la base de données:Linq2EF: mise à jour des enregistrements avec le résultat d'une CheckBoxList/ensemble de valeurs d'ID

  1. dossiers Supprimer qui étaient là, mais maintenant ne dispose pas d'un ID
  2. Ajouter des enregistrements qui ne sont pas là, mais ont maintenant ID vérifiés
  3. congé enregistrements qui étaient là, et qui sont encore vérifiés, seul.

En aggravant le problème, les ID soumis sont dans un tableau de chaînes, mais les objets de données ont Id comme int.

Répondre

0

Um, vous écrivez du code.

var submittedAsInts = submittedAsString.Select(s => int.Parse(s)); 
var toAdd = submittedAsInts.Where(i => !existingEntity.SomeProperty.Any(p => p.Id == i)); 
var toDelete = existingEntity.SomeProperty.Where(p => !submittedAsInts.Contains(p.Id)); 
foreach (var delId in toDelete) 
{ 
    var o = existingEntity.SomeProperty.Single(p => p.Id == delID); 
    existingEntity.SomeProperty.Remove(o); 
    Context.DeleteObject(o); 
} 
// similarly for insert. 
Questions connexes