Démarrage rapide avec les services de travail .NET 6 et DbContext
Introduction
Les services de travail .NET 6 sont une excellente option pour exécuter des tâches en arrière-plan, telles que des traitements périodiques, des mises à jour de données ou des appels d'API externes. En combinant les services de travail avec DbContext, vous pouvez facilement interagir avec une base de données dans le cadre de ces tâches.
Configuration d'un service de travail .NET 6 avec DbContext
- Créer un nouveau projet de service de travail: Utilisez l'outil de ligne de commande .NET pour créer un projet de service de travail :
dotnet new worker -n MyWorkerService
- Ajouter une référence à Entity Framework Core: Dans le fichier
MyWorkerService.csproj
, ajoutez une référence au package NuGetMicrosoft.EntityFrameworkCore
:
- Configurer DbContext: Créez une classe DbContext qui hérite de
DbContext
et définit les entités et les relations avec la base de données.
public class MyDbContext : DbContext
{
public MyDbContext(DbContextOptions options) : base(options)
{
}
public DbSet MyEntities { get; set; }
}
- Configurer le service de travail: Dans la classe
Worker
, injectezMyDbContext
dans le constructeur et utilisez-le pour interagir avec la base de données dans la méthodeExecuteAsync
.
public class Worker : BackgroundService
{
private readonly ILogger _logger;
private readonly MyDbContext _dbContext;
public Worker(ILogger logger, MyDbContext dbContext)
{
_logger = logger;
_dbContext = dbContext;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
// Accéder à la base de données avec _dbContext
// ...
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(10000, stoppingToken);
}
}
}
- Configurer l'injection de dépendances: Dans le fichier
Program.cs
, configurez l'injection de dépendances pourMyDbContext
. Assurez-vous de spécifier la chaîne de connexion et le fournisseur de base de données.
using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
// Ajouter DbContext à l'injection de dépendances
builder.Services.AddDbContext(options =>
{
options.UseSqlServer(builder.Configuration.GetConnectionString("MyDatabase"));
});
// ...
var app = builder.Build();
// ...
app.Run();
Exemple d'utilisation
Voici un exemple simple illustrant l'utilisation de DbContext dans un service de travail pour mettre à jour des données dans une base de données:
// Dans la méthode ExecuteAsync de Worker
var entity = await _dbContext.MyEntities.FirstOrDefaultAsync(e => e.Id == 1);
if (entity != null)
{
// Mettre à jour l'entité
entity.Name = "Nouveau nom";
_dbContext.Update(entity);
// Enregistrer les changements
await _dbContext.SaveChangesAsync();
_logger.LogInformation("Entité mise à jour avec succès.");
}
Avantages de l'utilisation de DbContext avec les services de travail
- Gestion des transactions: DbContext gère automatiquement les transactions, garantissant la cohérence des données.
- Code clair et concis: L'utilisation de DbContext simplifie l'interaction avec la base de données, rendant le code plus lisible et maintenable.
- Intégration avec Entity Framework Core: Profitez de toutes les fonctionnalités d'Entity Framework Core, telles que la migration de base de données et la validation des entités.
Conclusion
L'utilisation de DbContext avec les services de travail .NET 6 permet de créer des applications robustes et évolutives qui interagissent avec des bases de données de manière fiable et efficace. L'intégration de ces deux technologies vous offre un moyen puissant pour gérer les tâches en arrière-plan et maintenir l'intégrité de vos données.