2010-08-11 4 views
3

indiquant le code suivant:Interroger GetChangeSet() pour rechercher un objet spécifique?

Animal a = new Animal { Name = "Rover", Type = "Dog" }; 
ctx.Animal.InsertOnSubmit(a); 

permet de dire que le code précédent est un procédé qui est appelée à plusieurs reprises. Je ne veux pas soumettre le même objet deux fois. Serait-il possible d'interroger le DataContext en utilisant GetChangeSet() pour voir si cet objet existe déjà dans le ChangeSet?

GetChangeSet().Insert renvoie un IList<object> Je dessine un blanc quant à la façon de le trouver.

Répondre

3

figured it out ... En utilisant le code de question

ctx.GetChangeSet().Inserts.Any(ani => ani as Animal != null 
            && ((Animal) ani).Name == a.Name); 
+0

Ce code n'est pas bon pour être honnête. J'utiliserais 'OfType ()'. Vous ne pouvez pas utiliser 'Cast ()' car il lancerait 'InvalidCastException' si un élément n'est pas de type' T'. – hIpPy

1

Vous pouvez utiliser la méthode d'extension OfType<T>() à la place. Petit nettoyeur.

ctx.GetChangeSet().Inserts 
.OfType<Animal>().Any(ani => ani.Name == a.Name); 
Questions connexes