Files
mabibli/MaBibli.Api/Data/FabriqueDbContextConception.cs
Mathieu LimonierandClaude Opus 5 6a6d745af4 MaBibli 1.0.0
Gestion de bibliothèque personnelle auto-hébergée : catalogue, prêts,
scan de code-barres, consultation hors-ligne.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 22:36:16 +02:00

34 lines
1.4 KiB
C#

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
namespace MaBibli.Api.Data;
/// <summary>
/// Fabrique le <see cref="MaBibliDbContext"/> pour les <b>outils</b> (<c>dotnet ef</c>), sans
/// démarrer l'application.
/// </summary>
/// <remarks>
/// Sans elle, <c>dotnet ef</c> exécute <c>Program.cs</c> pour retrouver les services — et
/// <c>Program.cs</c> appelle <c>Database.Migrate()</c> au démarrage. Écrire une migration
/// suppose alors d'ouvrir la base de développement, ce qui est au mieux inutile et au pire
/// bloquant (constaté sur un système de fichiers réseau, où le verrou SQLite ne se prend
/// jamais : l'outil attendait cinq minutes puis renonçait).
/// <para>
/// ⚠️ La chaîne de connexion ci-dessous ne sert <b>qu'à la génération du code</b> : produire
/// une migration n'ouvre aucune base. Elle n'a donc pas à correspondre à quoi que ce soit, et
/// surtout pas à la base de production, qui est configurée par <c>ConnectionStrings__MaBibli</c>
/// dans l'unité systemd.
/// </para>
/// </remarks>
public sealed class FabriqueDbContextConception : IDesignTimeDbContextFactory<MaBibliDbContext>
{
public MaBibliDbContext CreateDbContext(string[] args)
{
var options = new DbContextOptionsBuilder<MaBibliDbContext>()
.UseSqlite("Data Source=mabibli-conception.db")
.Options;
return new MaBibliDbContext(options);
}
}