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

Linq Discussion :

[EF]Problème d'ajout car fractionnement de l'EntityKey?


Sujet :

Linq

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Points : 6
    Points
    6
    Par défaut [EF]Problème d'ajout car fractionnement de l'EntityKey?
    Bonjour,

    Lorsque j'essaie d'ajouter une entité, j'obtiens l'erreur suivante :
    Error Message :
    Test method EFile.BusinessLayer.Entities.Tests.RoutageExterneEntityTest.AddRoutageExterneTest threw exception: System.Data.UpdateException: Une valeur partagée entre les entités ou associations est générée à plusieurs emplacements. Assurez-vous que le mappage ne fractionne pas EntityKey en plusieurs colonnes générées par le serveur. ---> System.ArgumentException: Un élément avec la même clé a déjà été ajouté..
    StackTrace :
    System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
    Insert(TKey key, TValue value, Boolean add)
    System.Data.Mapping.Update.Internal.UpdateCommandOrderer.AddServerGenDependencies()
    System.Data.Mapping.Update.Internal.UpdateCommandOrderer.AddServerGenDependencies()
    System.Data.Mapping.Update.Internal.UpdateCommandOrderer..ctor(IEnumerable`1 commands, UpdateTranslator translator)
    System.Data.Mapping.Update.Internal.UpdateTranslator.ProduceCommands()
    System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
    System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache)
    System.Data.Objects.ObjectContext.SaveChanges(Boolean acceptChangesDuringSave)
    System.Data.Objects.ObjectContext.SaveChanges()
    Dispose() in E:\TfsEfile\E-FILE\EFile_solution\EFile.Tools.ObjectContextManagement\ObjectContextScope.cs: line 82
    EFile.BusinessLayer.Entities.Tests.RoutageExterneEntityTest.AddRoutageExterneTest() in E:\TfsEfile\E-FILE\EFile_solution\EFile.BusinessLayer.Entities.Tests\RoutageExterneEntityTest.cs: line 95
    Je ne comprends pas d'où vient le soucis. J'ai parcourus toutes les associations et je ne trouve pas ce qui pourrait poser problème.
    - Avez-vous des pistes de réflexion?
    - Connaissez vous le schéma de BDD ou mapping qui provoque obligatoirement ce problème?


    Je vous remercie.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    fais voir comment tu ajoutes ton entité, à voir ce texte je suppose que tu ajoutes deux fois la même entité !

    Et quelle est la clé primaire de ton entité ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Tout d'abord merci pour la réponse.

    Voici le code de test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    /// <summary>
            ///A test for Add
            ///</summary>
            [TestMethod()]
            public void AddRoutageExterneTest()
            {
     
                    RoutageExterneEntity target = new RoutageExterneEntity(); 
     
                    RoutageExterne newRoutageExterne = new RoutageExterne()
                    {
                        Descriptif = "Descriptif",
                        EnumTypeEtapeProspection = null,                    
                        Libelle = "Libelle",
                        Pli = null,
                        AppelOffreList = null,
                    }; 
     
                    target.Add(newRoutageExterne);
                    target.SaveAllObjectChanges();
                    Assert.AreNotEqual(0,   newRoutageExterne.EtapeProspectionExterneID);
     
            }
    la clé primaire de l'entité est EtapeProspectionExterneID.
    Elle est héritée de la classe EtapeProspectionExterne.

    lorsque j'ajoute la classe prospection externe seule, je n'ai aucun problème.

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Points : 2 331
    Points
    2 331
    Par défaut
    Justement, dans ce code, tu n'affectes pas la propriété EtapeProspectionExterneID. C'est dans la logique du SGBD de la générer automatiquement ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Arnard Voir le message
    Justement, dans ce code, tu n'affectes pas la propriété EtapeProspectionExterneID. C'est dans la logique du SGBD de la générer automatiquement ?

    Oui, c'est une identité avec compteur en base de données.
    Je n'ai donc pas besoin de la générer.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par kizin Voir le message
    Oui, c'est une identité avec compteur en base de données.
    Je n'ai donc pas besoin de la générer.
    Merci à toi,

    tu m'as fait penser à vérifier les identité incrémentée automatiquement dans le SGBD.

    La table mère et la table fille avaient une identité incrémentée automatiquement. Ce qui impliquait un fractionnement de l'entity key.

    c'est résolu et merci pour le coup de pouce.

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

Discussions similaires

  1. problème d'ajout et suppression de programmes
    Par ran_hery dans le forum Windows XP
    Réponses: 2
    Dernier message: 14/12/2005, 12h21
  2. [ECLIPSE WT] Problème d'ajout du serveur Tomcat
    Par SEMPERE Benjamin dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/12/2005, 12h20
  3. Problème d'ajout de mois
    Par auriolbeach dans le forum Access
    Réponses: 5
    Dernier message: 02/10/2005, 22h22
  4. Problème d'ajout d'imprimante sur LPT1
    Par arnaud_verlaine dans le forum Périphériques
    Réponses: 10
    Dernier message: 15/03/2005, 22h23
  5. Problème d'ajout multiples dans un BDD Access
    Par arnaud_verlaine dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/05/2004, 13h34

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