Этот вопрос задавался много раз в разных вариантах SO. Я прошел через все ответы и сжег много времени. Я просто не могу заставить эту работу работать.
Я работаю над asp.net mvc Entity Framework, SQL-сервером. У меня уже есть существующая база данных, таблицы и т.д., И все работает. Мне просто нужно добавить новый столбец в таблицу.
Итак, я добавил свойство в класс модели, чтобы добавить столбец в таблицу. Но безуспешно.
Итак, я делаю шаги в следующем порядке.
-
Добавьте поле в класс модели.
[Required] public string EmailSubject{ get; set; }
- Затем я удаляю папку Migrations в моем проекте asp.net mvc, содержащем класс Configuration.cs
-
Затем в консоли диспетчера пакетов я успешно выдаю следующую команду.
Enable-Migrations -ContextTypeName AppointmentReminder.Data.ReminderDb -Force
-
Затем я устанавливаю свойство true следующим образом
public Configuration() { AutomaticMigrationsEnabled = true; }
-
Затем я выдаю следующую команду в консоли диспетчера пакетов.
Update-Database -Verbose -Force
Вот что моя строка подключения к соединению по умолчанию с базой данных выглядит как
Data Source=(LocalDb)\v11.0;AttachDbFilename=C:\practice\AppointmentReminder4\AppointmentReminder4\App_Data\aspnet-AppointmentReminder4-20141202060615.mdf;Initial Catalog=aspnet-AppointmentReminder4-20141202060615;Integrated Security=True
Но я НЕОБХОДИМО добавить новый столбец в нужную вам таблицу.
Изменить 1
Я обновил модель следующим образом без обязательного атрибута и выполнил все вышеперечисленные шаги, но я все еще НЕ смог добавить столбец в таблицу.
public string EmailBody { get; set; }
Вот все команды и их вывод.
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>
Изменить 2 Наконец, решила эту проблему. Все мои шаги выше были правильными. Кроме того, что я редактировал класс модели, а не фактический класс данных, который фактически привязан к объекту ReminderDb (объект EF). После того, как я обновил правильный класс с помощью свойства, каждая вещь работала успешно. Спасибо всем, кто ответил с помощью!