Le Premier Code de la Migration - Entity Framework - impossible d'ajouter une colonne à la table
Cette question a été posée à de nombreuses reprises dans différentes saveurs sur les. Je suis passé par toutes les réponses et graver beaucoup de temps. J'ai juste ne peux pas sembler obtenir ce travail.
J'ai travaillé sur asp.net mvc, Entity Framework, SQL server app. J'ai déjà une base de données existante, tableaux, etc. et chaque chose est travail. J'ai juste besoin d'ajouter une nouvelle colonne à la table.
Donc.. j'ai ajouté une propriété dans la classe du modèle, de sorte que je pourrais ajouter la colonne à la table. Mais, sans succès.
Donc je ne les étapes dans l'ordre suivant.
- Ajouter le champ dans ma classe de modèle.
[Required] public string EmailSubject{ get; set; }
- Puis-je supprimer le dossier des Migrations dans mon asp.net projet mvc contenant de Configuration.cs de la classe
- Ensuite dans le Gestionnaire de paquets de la Console, j'en question à la suite de la commande avec succès.
Enable-Migrations -ContextTypeName AppointmentReminder.Data.ReminderDb -Force
- Puis j'ai mis la propriété véritable comme suit
public Configuration() { AutomaticMigrationsEnabled = true; }
- Puis-je émettre la commande suivante dans la console du gestionnaire de package.
Update-Database -Verbose -Force
Voici ce que ma chaîne de connexion de connexion par défaut pour la base de données ressemble à
Data Source=(LocalDb)\v11.0;AttachDbFilename=C:\practice\AppointmentReminder4\AppointmentReminder4\App_Data\aspnet-AppointmentReminder4-20141202060615.mdf;Initial Catalog=aspnet-AppointmentReminder4-20141202060615;Integrated Security=True
Mais je suis INCAPABLE d'ajouter une nouvelle colonne dans ma table désirée.
Edit 1
J'ai mis à jour le modèle comme suit, sans l'attribut obligatoire et exécuté toutes les étapes ci-dessus, mais je n'étais toujours PAS en mesure d'ajouter la colonne à la table.
public string EmailBody { get; set; }
Voici la liste des commandes et de leur sortie.
PM> Enable-Migrations -ContextTypeName AppointmentReminder.Data.ReminderDb -Force
Checking if the context targets an existing database...
Code First Migrations enabled for project AppointmentReminder4.
PM> Update-Database -Verbose -Force
Using StartUp project 'AppointmentReminder4'.
Using NuGet project 'AppointmentReminder4'.
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Target database is: 'aspnet-AppointmentReminder4-20141202060615' (DataSource: (LocalDb)\v11.0, Provider: System.Data.SqlClient, Origin: Configuration).
No pending explicit migrations.
Running Seed method.
PM> Update-Database -Verbose -Force
Using StartUp project 'AppointmentReminder4'.
Using NuGet project 'AppointmentReminder4'.
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Target database is: 'aspnet-AppointmentReminder4-20141202060615' (DataSource: (LocalDb)\v11.0, Provider: System.Data.SqlClient, Origin: Configuration).
No pending explicit migrations.
Running Seed method.
PM>
Edit 2
Enfin résolu ce problème. Toutes mes étapes ci-dessus sont correctes. Sauf que je a été l'édition de mon modèle de classe, par opposition à des données réelles de la classe qui est effectivement liée à la ReminderDb (EF objet). Après j'ai mis à jour la classe correcte avec la propriété, chaque chose a travaillé avec succès. Merci à tous ceux qui ont réagi avec l'aide!
OriginalL'auteur dotnet-practitioner | 2015-01-20
Vous devez vous connecter pour publier un commentaire.
Parce que le champ est obligatoire, vous devez spécifier une valeur par défaut. Modifier votre fichier de migration, de trouver la ligne de l'ajout de votre colonne, et de spécifier la valeur par défaut devrait être:
Pour référence:
La valeur par défaut pour les champs Requis dans le Cadre de l'Entité migrations?
Edit: Basé sur votre montage, vous devez créer une migration avant de vous essayez de mettre à jour. Voir cet exemple pour la façon dont vous utilisez habituellement.
Toutefois, si vous essayez d'appliquer le Code des Premières Migrations vers une base de données existante, cet article peut vous aider: Le Premier Code des Migrations avec une base de données existante
Vous ne faites pas
add-migration
n'importe où, donc, il n'y a pas de quoi à s'appliquer. Voir ma mise à jour ci-dessus.OriginalL'auteur Will Eddins
Décorée à la nouvelle colonne avec attribut nécessaire. Si la table a déjà quelques lignes de ces lignes ne peut pas avoir cette colonne.
Supprimer nécessaire. Que faire des migrations, de remplir toutes les lignes avec des données.
Les biens nécessaires et de migrer à nouveau.
toujours pas de mise à jour après la suppression de l'attribut obligatoire
OriginalL'auteur tmg