IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entity Framework Discussion :

Ajout données: bloqué au Savechanges


Sujet :

Entity Framework

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Par défaut Ajout données: bloqué au Savechanges
    Bonjour,

    Je reprends EF4 sous VB2010. J'ai un souci et ne trouve pas pourquoi.
    1 table Parent et 1 Enfant.
    Je fait glisser sur un Formulaire un datagridview pour la table Parent (depuis la source de données).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub frmTest_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        ParentBindingSource.DataSource = aObjectContext.asaParent
    End Sub
    Private Sub BindingNavigatorDataSave_Click(sender As System.Object, e As System.EventArgs) Handles BindingNavigatorDataSave.Click
            Me.Validate()
            aObjectContext.SaveChanges()
    End Sub
    Tout fonctionne bien.

    Si je glisse sur le formulaire un datagridview pour la table enfant, la seule modification est l'apparition du bindingsource enfant sur le form. Je ne fait aucun autre changement.

    Le souci est le suivant dans l'ordre :
    - j'ajoute une nouvelle ligne Parent
    - je clique sur la dernière ligne de la grille parent (celle avec "*"), je ne fais rien sur cette ligne et reviens sur celle créée.
    - Je lance le SaveChange()

    L'erreur suivante apparait :
    "Les modifications apportées à la base de données ont été validées, mais une erreur s'est produite lors de la mise à jour du contexte de l'objet. ObjectContext est peut-être dans un état incohérent. Message d'exception interne : AcceptChanges ne peut pas continuer, car les valeurs de clés de l'objet sont en conflit avec un autre objet dans ObjectStateManager. Assurez-vous que les valeurs de clés sont uniques avant d'appeler AcceptChanges."

    Le nouvel enregistrement est bien inséré dans la base de données.

    Si ne ne vais pas sur la ligne "*", cette erreur n'apparait pas.
    Si je ne mets pas le bindingsource enfant sur le form, l'erreur n'apparait pas.

    Que se passe-t-il donc???
    Laumon.

  2. #2
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    Avec de faire le save mets un point d'arrêt et regarde combien d'entité tu as dans le context, je pense que tu ne gère pas les Id, quand tu as ajouté la première ligne par défaut tu as 0 comme valeur, et le fait de cliquer sur l'étoile il en a créé une deuxième toujours avec 0, à vérifier.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Par défaut
    Dans les tables sql server les Id sont des compteurs.
    Précision, si je crée N nouvelles lignes dans Parent et que je lance le SaveChanges() sans aller sur la nouvelle ligne en "*" (la ligne N+1). Tout s'enregistre et le compteur fonctionne bien. Si je vais sur la ligne "*" avant, ça plante.
    Mais le souci c'est que c'est vrai que si j'ai le bindingsource de l'enfant sur le form! bizarre.
    Laumon.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Par défaut
    Bonjour,

    Voici par l'exemple dans les 2 fichiers joints mes tests.
    - une description des tables sql server
    - l'application test.

    Et je redonne mon problème : lorsque j'ajoute des lignes parents, si avant la sauvegarde je clique sur une nouvelle ligne, ça plante avec le message que j'ai donné plus haut.
    Rencontrez-vous le même souci que moi où c'est QUE chez moi ?

    A quel niveau se situe le souci (vb.net, serveur sql, windows, EF, ...) ?
    Avant de tout passer en sql et supprimer EF de mon application (plusieurs jours de travail estimé) quelqu'un a-t-il une idée?
    Merci.
    Laumon.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    gardez ENTITIES mais passez par une procédure stockée c'est tout...

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Par défaut
    Bonjour,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/02/2013, 14h13
  2. ajout donnée dans formulaire
    Par gregius dans le forum Access
    Réponses: 2
    Dernier message: 09/01/2006, 11h12
  3. Réponses: 2
    Dernier message: 04/12/2005, 20h07
  4. problème ajout données avec db.execute et access
    Par Dauphind dans le forum Access
    Réponses: 2
    Dernier message: 29/11/2005, 12h03
  5. Ajouter données dans un champ (concat)
    Par TNorth dans le forum Requêtes
    Réponses: 6
    Dernier message: 09/05/2005, 21h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo