Je travaille sur un projet ASP.NET MVC avec Entity Framework avec le code d'abord de la base de données. Je reçois les modèles pour chaque table de la base de données. J'ai apporté des modifications aux modèles, activé les migrations et lors de l'initiation de la migration, une erreur s'est produite:
Il existe déjà un objet nommé 'Nom de table' dans la base de données. "
J'ai essayé avec update-database -force
mais je n'ai pas aidé. La migration initiale crée les tables existantes!
Comment faire en sorte que la migration initiale applique les modifications apportées aux modèles sans créer les tables à partir du début?
Et quelle est la meilleure pratique pour synchroniser les modifications entre la base de données et les modèles dans ce cas?
essayer de courir le
Add-Migration InitialCreate –IgnoreChanges
commande dans Package Manager Console. Cela crée une migration vide avec le modèle actuel en tant qu'instantané. puis exécutez le
Update-Database
commande dans Package Manager Console. Ceci appliquera la migration InitialCreate à la base de données. Dans la mesure où la migration proprement dite ne contient aucune modification, il suffit d'ajouter une ligne à la table __MigrationsHistory, indiquant que cette migration a déjà été appliquée.
voir this
puis changez vos modèles et ajoutez la migration.
une autre approche consiste à simplement commenter tout le code sur des méthodes de haut en bas
Pour moi, le mieux est de commenter tout le code dans les fonctions UP et Down du fichier de migration initial, puis de le déclencher dotnet ef database update
, cela devrait fonctionner correctement, assurez-vous de mettre à jour la migration avant de commenter la migration initiale
La solution Amr Alaa fonctionne, mais la base de données n'a pas migré vers le dernier modèle.
Voici comment cela a fonctionné (en utilisant la migration automatique):
Définissez ces deux propriétés sur true dans le fichier Configuration.cs nouvellement créé.
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
Execute Update-Database -Force
Votre base de données sera mise à jour au dernier schéma et prête.
j'espère que cela t'aides.