.net 6 Entity Framework Execute Stored Procedure

4 min read Jun 03, 2024
.net 6 Entity Framework Execute Stored Procedure

Exécuter des procédures stockées avec Entity Framework Core 6 dans .NET 6

Introduction

Entity Framework Core (EF Core) est un ORM populaire pour .NET qui facilite l'interaction avec les bases de données. Il offre une abstraction de haut niveau, mais parfois vous devez exécuter des procédures stockées existantes. Cette article vous guidera à travers l'exécution de procédures stockées avec EF Core 6 dans .NET 6.

Exécuter une procédure stockée sans paramètres

La méthode la plus simple consiste à utiliser la méthode FromSqlRaw de DbContext. Cette méthode vous permet d'exécuter une requête SQL brute, y compris une procédure stockée.

using Microsoft.EntityFrameworkCore;

// ...

public async Task> GetCustomers()
{
    // Nom de la procédure stockée
    string storedProcedureName = "GetCustomers"; 

    return await _context.Customers
        .FromSqlRaw($"EXEC {storedProcedureName}")
        .ToListAsync();
}

Dans cet exemple, nous exécutons la procédure stockée GetCustomers et mappons les résultats à la liste d'objets Customer.

Exécuter une procédure stockée avec des paramètres

Pour exécuter une procédure stockée avec des paramètres, vous pouvez utiliser la méthode FromSqlInterpolated de DbContext.

using Microsoft.EntityFrameworkCore;

// ...

public async Task> GetCustomersByName(string name)
{
    // Nom de la procédure stockée
    string storedProcedureName = "GetCustomersByName";

    return await _context.Customers
        .FromSqlInterpolated($"EXEC {storedProcedureName} @name = {name}")
        .ToListAsync();
}

Dans cet exemple, nous passons le nom du client comme paramètre à la procédure stockée GetCustomersByName.

Mapper les résultats à un type de données personnalisé

Si la procédure stockée renvoie des données qui ne correspondent pas exactement à un modèle d'entité, vous pouvez mapper les résultats à un type de données personnalisé.

using Microsoft.EntityFrameworkCore;

// ...

public async Task> GetCustomersWithDetails()
{
    // Nom de la procédure stockée
    string storedProcedureName = "GetCustomersWithDetails";

    return await _context.Customers
        .FromSqlRaw($"EXEC {storedProcedureName}")
        .Select(r => new CustomerDto 
        {
            Id = r.Id,
            Name = r.Name,
            // Mapper d'autres propriétés
        })
        .ToListAsync();
}

// Type de données personnalisé
public class CustomerDto 
{
    public int Id { get; set; }
    public string Name { get; set; }
    // Autres propriétés
}

Conclusion

Exécuter des procédures stockées avec EF Core 6 dans .NET 6 est relativement simple. Utilisez les méthodes FromSqlRaw ou FromSqlInterpolated pour exécuter des requêtes SQL brutes et mapper les résultats à des modèles d'entités ou des types de données personnalisés. N'oubliez pas de bien comprendre les paramètres et les types de données retournés par votre procédure stockée.

Note: Pour une meilleure organisation du code, il est recommandé de définir vos procédures stockées dans un fichier séparé et de les référencer dans votre code .NET. Cela permettra une meilleure maintenabilité et une meilleure lisibilité.