Bonjour à tous ,

J'ai un souci lors d'un update appelé via un objectDataSource. Voici la situation :
Je travail en ASP/C# EF4.0.

J'ai une grid (ASP) qui est liée à un ObjectDataSource. Cet ObjectDataSource est lié à aux méthodes Select, Delete, Update et Insert. Lorsque je clique sur "Edit" une ligne de ma grid, que je modifie les données et que je valide mon changement, la ligne éditée est dupliquée : Une avec la nouvelle valeur et l'ancienne reste aussi. Les deux lignes pointent probablement vers deux objets différents dont l'id est le même.

Ce problème arrive lorsque j'ai ce code pour le Update :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
        [DataObjectMethodAttribute(DataObjectMethodType.Update, true)]
        public static void Update(SearchItem aSearchItem)
        {
            SearchItem oldSearchItem = Select().Where(si => si.Id == aSearchItem.Id).FirstOrDefault();
            aSearchItem.CopyTo(oldSearchItem);
        }
Si je change pour ceci, il ne duplique plus :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
        [DataObjectMethodAttribute(DataObjectMethodType.Update, true)]
        public static void Update(SearchItem aSearchItem)
        {
            SearchItem oldSearchItem = Select().Where(si => si.Id == aSearchItem.Id).LastOrDefault();
            aSearchItem.CopyTo(oldSearchItem);
            aSearchItem.RemoveFromContext();
        }
On peut voir très clairement que l'objet en cours d'édition est (soit aSearchItem) a été ajouté au contexte. Comment cela se fait-il ? Dans mes autres grid, l'objet temporaire d'édition n'est jamais ajouté au contexte automatiquement.

Je vais relire mon code pour voir si cette erreur vient de mon côté, mais je tenais à savoir si je n'avais pas saisi quelque chose.

Merci d'avance.