Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > Entity Framework
Entity Framework Forum d'entraide sur le développement avec le modèle d'accès aux données Entity Framework de Microsoft.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 04/10/2012, 17h51   #1
Arnard
Membre Expert
 
Homme Arnaud
Développeur .NET
Inscription : avril 2006
Messages : 1 386
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2006
Messages : 1 386
Points : 1 582
Points : 1 582
Par défaut [DB First/EDMX] Add/Attach sur un nouveau context

Bonjour,

je rencontre un souci dans l'utilisation de EF 4 en mode DB First.

J'ai une liste de Catégorie, qui comprend une liste d'actions, chaque action comprend une liste d'ActionAfficheur (relation 1 - n dans les deux cas donc).

Je charge mes données depuis un contexte A dans un usage WPF (application 2 tiers : Affichage et entités).

le chargement des données n'est pas un souci, je crée mon premier contexte A pour cela. Suite à des modifications, je veux sauvegarder mes données, donc j'ouvre un nouveau contexte, le B.


Si je ne fais que modifier des propriétés type String dans ces classes, pas de souci. Mais si j'ajoute un nouvel objet ActionAfficheur à une instance d'Actions existante, je reçois une exception, dépendant de comment je procède pour sauvegarder.


Si je tente de sauvegarder en partant de la liste terminale des ActionAfficheur après un selectMany pour les récupérer, je reçois l'erreur suivante (après un appel à AddObject) :
Citation:
The EntityKey property can only be set when the current value of the property is null.
et l'entityKey passe d'une valeur générée et d'un EntityState added à null & detached...

Si je tente de sauvegarder en partant de la liste des categories en iterant dessus, lors que je traite la catégorie qui comprend l'action qui a reçu un nouvel ActionAfficheur, je recois l'erreur suivante :
Citation:
An object with a temporary EntityKey value cannot be attached to an object context.
et l'entityKey est passé de unchanged à null & detached.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
/// C'est le même corps de fonction pour la mise à jour des Categorie, Action et ActionAfficheur, en remplacant juste la liste de destination
public void Update(OPIAEntities context)
        {
            if (this.EntityKey == null || this.EntityKey.IsTemporary || this.EntityKey.EntityKeyValues == null)
                context.Categorie.AddObject(this); //Si c'est nouvel item, je l'ajoute à ma liste
 
            else
            {
                try 
                {
                    context.Categorie.Attach(this);
                }
                catch(Exception ex)
                {//Debug
                }
 
                if (this.MarkAsDeleted == false)
                    context.ObjectStateManager.ChangeObjectState(this, System.Data.EntityState.Modified);
 
                else
                    context.DeleteObject(this);
            } 
        }
Pour la catégorie, je fail sur le Attach, pour le nouvel ActionAfficheur, je fail sur le Add


Merci pour votre aide
Arnard est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h37.


 
 
 
 
Partenaires

Hébergement Web