.net Core Dbcontext Call Stored Procedure

4 min read Jun 03, 2024
.net Core Dbcontext Call Stored Procedure

Appeler des procédures stockées avec DbContext dans .NET Core

L'utilisation de procédures stockées dans une application .NET Core est un moyen efficace d'optimiser les requêtes de base de données et d'améliorer la sécurité. Avec EntityFramework Core (EF Core), vous pouvez facilement appeler des procédures stockées à partir de votre code.

Configuration de DbContext

Avant de pouvoir appeler des procédures stockées avec DbContext, vous devez les configurer dans votre fichier DbContext.

public class MyDbContext : DbContext
{
    public MyDbContext(DbContextOptions options) : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        // Configuration de la procédure stockée
        modelBuilder.HasDbFunction(
            nameof(GetProductsByCategory),
            b => b.HasName("GetProductsByCategory")
                .IsComposable()
                .HasParameter("categoryId", typeof(int))
                .Returns>()
        );
    }

    // Définition de la méthode pour appeler la procédure stockée
    public List GetProductsByCategory(int categoryId)
    {
        return this.Set().FromSqlRaw("GetProductsByCategory @categoryId", categoryId).ToList();
    }
}

Dans cet exemple:

  • HasDbFunction est utilisé pour définir la procédure stockée dans le modèle EF Core.
  • HasName définit le nom de la procédure stockée dans la base de données.
  • IsComposable indique que la fonction est une procédure stockée.
  • HasParameter définit les paramètres de la procédure stockée et leur type.
  • Returns définit le type de données renvoyé par la procédure stockée.

Appel de la procédure stockée

Une fois que vous avez configuré la procédure stockée dans votre DbContext, vous pouvez l'appeler à partir de votre code comme une méthode ordinaire.

// Injection du DbContext
private readonly MyDbContext _dbContext;

public MyController(MyDbContext dbContext)
{
    _dbContext = dbContext;
}

// Appel de la procédure stockée
public IActionResult GetProductsByCategory(int categoryId)
{
    var products = _dbContext.GetProductsByCategory(categoryId);

    return Ok(products);
}

Dans cet exemple:

  • La méthode GetProductsByCategory utilise la méthode définie dans le DbContext pour appeler la procédure stockée.
  • La valeur du paramètre categoryId est transmise à la procédure stockée.

Avantages de l'utilisation de procédures stockées avec DbContext

L'utilisation de procédures stockées avec DbContext présente plusieurs avantages :

  • Performances améliorées : Les procédures stockées sont compilées et optimisées par le serveur de base de données, ce qui peut améliorer les performances des requêtes.
  • Sécurité accrue : Les procédures stockées peuvent limiter l'accès aux données et améliorer la sécurité de votre application.
  • Réutilisabilité : Les procédures stockées peuvent être réutilisées dans plusieurs parties de votre application.
  • Maintenance simplifiée : Les modifications de la logique métier peuvent être effectuées dans la procédure stockée, ce qui simplifie la maintenance de votre application.

En conclusion, l'utilisation de procédures stockées avec DbContext dans .NET Core est un moyen efficace d'optimiser les requêtes de base de données, d'améliorer la sécurité et de simplifier la maintenance de votre application.