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 :

[LinQ] System .Data. Linq .DuplicateKeyException


Sujet :

Linq

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 16
    Points : 8
    Points
    8
    Par défaut [LinQ] System .Data. Linq .DuplicateKeyException
    Bonjour !
    Je travaille sur un web service qui recupere des donnees qu'on lui envoie depuis d'autres systemes (grosso modo juste pour la mise en contexte) en C#.
    La bdd est sur sqlserver.
    Je travaille sur un schema ou une Propriete possede une MonnaieContratId et une MonnaieActuelId, FK de MonnaieId sur la table Monnaie.
    J'ai correctement mapper mon DBML, j'ai donc deux entityRef MonnaieContrat et MonnaieActuel dans ma classe Properiete.

    Mon code recoit une propriete, dans un format, et fait juste correspondre ces donnees a mon objet dans mon webservcie afin dy ajouter/actualiser dons ma BDD (jespere que je suis claire ...)

    J'utilise un cache pour les monnaies, je charge donc toutes les monnaies dans un cache et si le cache na pas ete charge je le fait et requete le cache au lieu de la BDD.

    Mon problem est que lorsque je recupere mon objet monnaie depuis le cache jo'btiens l'erreur System.Data.Linq.DuplicateKeyException: Cannot add an entity with a key that is already in use.
    Si je requete directement mon dataContext SubmitOnChanges marche parfaitement.

    J'ai eassye plusieurs chose comme utilise Attach ou Refresh, proprietes du dataContext. J'ai meme lus qqpart que activer Identity sur ma primary key mais cela ne marche pas.

    Mon code simplifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DataContextFactory dataContextFactory = new DataContextFactory()
    CurrencyRepositoryCache currencyCache = new CurrencyRepositoryCache(new CurrencyRepository(dataContextFactory ));
    providerToCheck.WorkingCurrency = currencyCache.GetCurrencyByCode(providerToProcess.WorkingCurrency);
    dataContextFactory .SubmitChanges();
    Au niveau du cache c'est qqch comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    //Recupere les donnes de la bdd
    List<Currency> currencies = ReadOnlyInstance.currencyRepository.GetCurrencyList();
    List<CurrencyFeeCode> currencyFeeCodes = ReadOnlyInstance.currencyRepository.GetCurrencyFeeCodeList();
    //Load cache
    HttpRuntime.Cache["Currencies"] = currencies;
    HttpRuntime.Cache["CurrencyFeeCodes"] = currencyFeeCodes;
     
    var currencies = (List<Currency>) HttpRuntime.Cache["Currencies"];
     
    return currencies.FirstOrDefault(c => c.Code.ToUpper() == code.ToUpper());
    Si vous avez des suggestions je suis preneur !

    Merci par avance

  2. #2
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 568
    Points
    3 568
    Par défaut
    Tu fais bien un dispose du DataContext ou tu gardes une référence en mémoire?
    Microsoft MVP : Windows Platform

    MCPD - Windows Phone Developer
    MCPD - Windows Developer 4

    http://www.guruumeditation.net

    “If debugging is the process of removing bugs, then programming must be the process of putting them in.”
    (Edsger W. Dijkstra)

Discussions similaires

  1. System.Data.Linq.Mapping sous Visual C# 2008 Express ?
    Par Papy214 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 26/02/2008, 10h23
  2. Réponses: 7
    Dernier message: 17/09/2006, 10h42
  3. [C# 2.0/WIN CE 5.0] Pourquoi System.Data.SqlClient est introuvable ?
    Par Jones dans le forum Accès aux données
    Réponses: 3
    Dernier message: 05/07/2006, 09h14
  4. [VB.NET] Ou importer les namespaces com System.data.. ?
    Par beegees dans le forum Windows Forms
    Réponses: 5
    Dernier message: 09/06/2006, 11h06
  5. Réponses: 4
    Dernier message: 22/05/2006, 11h46

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