Mise en place de la structure de base, sans aucune fonctionnalité métier : - MaBibli.sln à la racine, avec trois projets ciblant net10.0 - MaBibli.Client : Blazor WebAssembly PWA (dotnet new blazorwasm --pwa), pages d'exemple du modèle (Counter, Weather) retirées - MaBibli.Api : ASP.NET Core, sert aussi les fichiers statiques du client (UseBlazorFrameworkFiles + MapFallbackToFile), via le package Microsoft.AspNetCore.Components.WebAssembly.Server - MaBibli.Shared : entités et enums partagés (Livre, Pret, Format, Statut), conformes au modèle de données de CLAUDE.md — AjoutePar est une simple traçabilité, Pret est une table séparée pour garder l'historique complet - EF Core + SQLite dans l'API : MaBibliDbContext, chaîne de connexion, et migration initiale InitialCreate vérifiée par un database update - dotnet-tools.json : dotnet-ef épinglé en outil local Vérifié : dotnet build sans avertissement, et dotnet publish MaBibli.Api -c Release -r linux-x64 --self-contained produit un dossier unique dont le wwwroot contient bien _framework/. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
33 lines
928 B
C#
33 lines
928 B
C#
using MaBibli.Shared.Entites;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace MaBibli.Api.Data;
|
|
|
|
public class MaBibliDbContext(DbContextOptions<MaBibliDbContext> options) : DbContext(options)
|
|
{
|
|
public DbSet<Livre> Livres => Set<Livre>();
|
|
|
|
public DbSet<Pret> Prets => Set<Pret>();
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
modelBuilder.Entity<Livre>(livre =>
|
|
{
|
|
livre.Property(l => l.Titre).IsRequired();
|
|
livre.HasIndex(l => l.Isbn);
|
|
livre.HasMany(l => l.Prets)
|
|
.WithOne(p => p.Livre)
|
|
.HasForeignKey(p => p.LivreId)
|
|
.OnDelete(DeleteBehavior.Cascade);
|
|
});
|
|
|
|
modelBuilder.Entity<Pret>(pret =>
|
|
{
|
|
pret.Property(p => p.Emprunteur).IsRequired();
|
|
pret.HasIndex(p => p.LivreId);
|
|
});
|
|
}
|
|
}
|