Bonjour tout le monde,

Il m'arrive un problème vraiment très bizarre et aléatoire.
J'ai un webService qui possède un module de cache (géré par un ConcurrentDictionary key/MemoryCache) pour gérer les objets génériques. Le cache fonctionne bien et ressort bien les données.

Cependant je suis confronté à un bug vraiment bizarre que je n'arrive pas à comprendre ni à résoudre sans passer par le reset du cache.

J'ai une liste de 4 objets très basiques que je requête en base (code / libellé, le code contient qu'une seule lettre). Je renvoie ensuite celui qui m'intéresse via une requête linq en singleOrDefault.
J'ai une erreur qui pète aléatoirement sur le singleOrDefault car il trouve plus d'un élément qui matche. En investigant plus en détail, je me suis rendu compte qu'aléatoirement, en retournant chercher ma liste de 4 objets en cache, les lettres du codes se dupliquaient sur certains d'eux :

J'ai 4 objets avec un code à "C", "R", "T" et "P", et un libellé bien distinct pour chaque, et aléatoirement le "T" se transforme en "R" (mais garde bien son libellé) et fait donc péter le Single fait derrière.
Le seul moyen de résoudre le pb actuellement, c'est de rafraichir la liste en BDD, là les lettres se remettent bien et l'erreur disparait, jusqu'à un nouvel appel qui aléatoirement remélange mes codes...

C'est tellement invraisemblable à mes yeux que j'espère que qqun aura une idée pour résoudre ce pb, sinon je mettrai un test d'unicité sur ma liste pour la rafraichir ou non, mais cette solution est moche et surtout j'ai peur que ce problème puisse arriver sur d'autres listes du cache.

Merci d'avance,

Guillaume