Aller au contenu principal

9-3 Couche Data

Imgur

Les contrôleurs contiennent des requêtes SQL 🤢, ce qui n'est pas très élégant. Non seulement ce n'est pas très élégant, mais peu pratique. Si on a besoin de la même requête ailleurs dans l'application, on devra la réécrire plutôt que de pouvoir la réutiliser.

Snowfall.Web.Mvc/Controllers/EvenementsController.cs
[Route("/")]
public IActionResult Index()
{
string sql = @"
SELECT * from evenements;
";

using (IDbConnection connection = new NpgsqlConnection(_connectionString))
{
IEnumerable<Evenement> evenements = connection.Query<Evenement>(sql);
return View(evenements.ToList());
}
}

Nous allons extraire ces requêtes et les déplacer dans la couche Data. Pour ce faire, on créera des classes responsables des requêtes associées à chaque modèle/entité et on utilisera l'appellation Repository pour ces dernières.

info

Les repositories sont des classes qui encapsulent la logique requise pour accéder aux sources de données. Ils centralisent les fonctionnalités d'accès aux données communes, offrant une meilleure maintenabilité et découplant l'infrastructure ou la technologie utilisée pour accéder aux bases de données.

Dossier Repositories

Pour mettre les classes d'accès BD (repositories), on créera un dossier Repositories sous le projet Snowfall.Data.

  1. Clic droit Snowfall.Data -> Add -> Directory Imgur
  2. Nommer le dossier Repositories Imgur
  3. Vous devriez avoir la structure suivante pour le projet Data:
    • Snowfall.Data
      • Configurations
      • Migrations
      • Repositories

Ajout de la référence Snowfall.Domain au projet

Le repository retournera des objets de type Evenement et ces derniers sont dans le projet Snowfall.Domain. Ajoutons la référence!

  1. Clic droit Snowfall.Data -> Add -> Reference... Imgur
  2. Cocher Snowfall.Domain. Imgur
  3. Add

Installation de Dapper dans le projet Data

Dapper a été installé dans le projet Web.Mvc pour présenter rapidement son rôle et comment l'utiliser, mais maintenant que l'accès BD doit être effectué à partir du projet Data, il faut installer la dépendance Dapper dans ce dernier.

  1. Clic droit Snowfall.Data -> Manage NuGet Packages Imgur
  2. Recherche Dapper et installation dans le projet via le + vert Imgur