Le switch de collecte des ressources était commenté : 157 lignes mortes dans Export, 126 dans Import. Une visite téléchargée n'embarquait donc que l'image de la configuration, celle du loader et l'image de chaque section — ni contenus d'articles, ni audios, ni icônes de carte, ni images de quiz. Export matérialise désormais les entités, pas seulement leurs DTO, et appelle GetReferencedResourceIds(language) : la méthode existait déjà sur les 13 sous-types et n'attendait que d'être appelée. Elle filtre aussi les audios par langue, ce que le switch ne faisait pas. Import cesse de redécouvrir les ressources section par section : l'export embarquant tout ce qui est référencé, une passe unique sur la charge suffit. createResource étant idempotente, les quelques appels ciblés qui subsistent sont sans effet. 4 tests, dont un qui vérifie par réflexion que les 13 sous-types implémentent la collecte : le trou venait d'un switch où un type oublié passait dans le default sans bruit, et c'est ce qu'il ne faut plus pouvoir refaire. dotnet test 148/148. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Migrations
Invite de commande
Ouvrir un invite de commande dans le répertoire de la solution
Supprimer la dernière migration
A faire uniquement si elle n'a pas encore été appliquée à la base de données
dotnet ef migrations remove
Ajouter une migration
dotnet ef migrations add
Mise à jour de la base de données
dotnet ef database update