> Tech > Repository en mémoire

Repository en mémoire

Tech - Par Renaud ROSSET - Publié le 30 novembre 2010

Il est étonnant de voir l’étendue des fonctionnalités de base de données en mémoire créables avec une seule instance de List et du code LINQ (Language Integrated Query). La partie la plus difficile à implémenter est de générer les valeurs IDENTITY et, encore, cela revient seulement à incrémenter une

Repository en mémoire

variable integer. Si vous concevez votre implémentation de substitution afin d’employer des génériques, vous pouvez créer quasiment instantanément un Repository de substitution capable d’émuler la fonctionnalité de base de données pour n’importe lequel de vos objets métier.

Dans l’exemple de code ci-dessus, vous pouvez constater que tout tourne autour de la propriété Items. Celle-ci contient tous les éléments dans la « base de données » et est la cible de toutes les requêtes LINQ. La méthode Save() prend une instance d’un objet métier et regarde si la propriété Id a la valeur 0 ou non. Si la valeur est 0, le
Repository de substitution simule une instruction INSERT en incrémentant la variable m_currentIdValue et en définissant la valeur sur la propriété Id de l’objet. Une fois la valeur d’identité définie, la méthode Save() ajoute l’objet à la collection Items.

La méthode GetById() utilise la propriété Id sur l’interface IInt32Id et émet une requête LINQ sur la collection Items afin de trouver le premier objet avec la valeur Id. Pour créer la fonctionnalité de test unitaire UsernameExists(), vous devez implémenter la méthode GetByUser Name() définie sur IUser Repository. Pour cela, vous créez simplement une classe intitulée In MemoryUserReposi tory et étendez celle-ci à partir de Repository Mock. A partir de là, vous écrivez une requête LINQ qui recherche les utilisateurs correspondants dans la collection Items via UserName.

Avec cette implémentation en mémoire, vous ne vous souciez plus de savoir si la base de données est opérationnelle, si elle contient d’anciennes données et si elle comporte des contraintes de clé étrangère. La configuration pour le test UsernameExists() revient à ajouter simplement des instances
de User à la collection Items via des appels à Save(). Voici la logique de configuration pour le test Username Exists().

Téléchargez cette ressource

Créer des agents dans Microsoft 365 Copilot

Créer des agents dans Microsoft 365 Copilot

Insight vous guide dans l’utilisation de la nouvelle expérience de création d’agents dans Microsoft Copilot Studio, disponible dans Copilot Chat. Découvrez les étapes clés pour concevoir, configurer et déployer ces nouveaux agents et injecter la puissance de l’IA directement dans le flux de travail.

Les plus consultés sur iTPro.fr

A lire aussi sur le site

À la une de la chaîne Tech