diff --git a/MaBibli.Api/Data/FabriqueDbContextConception.cs b/MaBibli.Api/Data/FabriqueDbContextConception.cs new file mode 100644 index 0000000..a6081fe --- /dev/null +++ b/MaBibli.Api/Data/FabriqueDbContextConception.cs @@ -0,0 +1,33 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Design; + +namespace MaBibli.Api.Data; + +/// +/// Fabrique le pour les outils (dotnet ef), sans +/// démarrer l'application. +/// +/// +/// Sans elle, dotnet ef exécute Program.cs pour retrouver les services — et +/// Program.cs appelle Database.Migrate() 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). +/// +/// ⚠️ La chaîne de connexion ci-dessous ne sert qu'à la génération du code : 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 ConnectionStrings__MaBibli +/// dans l'unité systemd. +/// +/// +public sealed class FabriqueDbContextConception : IDesignTimeDbContextFactory +{ + public MaBibliDbContext CreateDbContext(string[] args) + { + var options = new DbContextOptionsBuilder() + .UseSqlite("Data Source=mabibli-conception.db") + .Options; + + return new MaBibliDbContext(options); + } +}