Так что сегодня я столкнулся с странной ситуацией - при обновлении существующей базы данных новыми таблицами я получил дополнительный столбец в одной из моих таблиц.ASP.NET - Неожиданный столбец появляется во время обновления базы данных Code First
Как это выглядит:
Raport.cs
public class Raport { [DatabaseGenerated(DatabaseGeneratedOption.None)] [Key] public string raport_id { get; set; } //id raportu public string userID { get; set; } public DateTime creation_time { get; set; } public DateTime last_modyfication { get; set; } public virtual ICollection<ThrashType> ThrashType { get; set; } public virtual UserFrontInfo UserFrontInfo { get; set; }
}
ThrashType.cs
public class ThrashType { [Key] //[DatabaseGenerated(DatabaseGeneratedOption.None)] public int IdTrash { get; set; } public string RaportId { get; set; } public string ClassName { get; set; } public int Quantity { get; set; } public string Information { get; set; } public virtual Raport Raport { get; set; } }
UserFrontInfo.cs
public class UserFrontInfo { [DatabaseGenerated(DatabaseGeneratedOption.None)] [Key] public string userId { get; set; } public string userName { get; set; } public string whereFromName { get; set; } public virtual ICollection<Raport> Raport { get; set; } }
То, что я сделал перед запуском в этой ситуации: 1/добавлено Миграции 2 /, так как мне нужно, чтобы добавить новые таблицы, я вслед за этим: Reset Entity-Framework Migrations (первый комментарий под ответами; более читаемая версия):
кредиты Greg Gum для этого (https://stackoverflow.com/users/425823/greg-gum)
выпуск: Вы сброшенная свои миграции, и вы хотели бы сбросить его без удаления существующих таблиц. Проблема: вы не можете сбрасывать миграцию с существующими таблицами в базе данных, так как EF хочет создавать таблицы с нуля. Что делать: Удалить существующие миграции из таблицы Migrations_History. Удалите существующие миграции из папки миграции микс. . Запустите add-migration Сброс. Это создаст миграцию в вашей папке миграции, которая включает в себя создание таблиц (но она не будет запускаться так, чтобы она не выходила из строя.) Теперь вам нужно создать исходную строку в таблице MigrationHistory, чтобы EF имел моментальный снимок текущего состояния. EF сделает это, если вы примените миграцию . Однако вы не можете применить перенос, который вы только что сделали , поскольку таблицы уже существуют в вашей базе данных. Поэтому перейдите в Migration и закомментируйте весь код внутри метода «Вверх». Теперь запустите update-database. Он применит миграцию (хотя фактически не изменяет базу данных ) и создает строку моментального снимка в MigrationHistory. Теперь вы сбросили свои миграции и можете продолжить нормальные миграции .
Тогда все было отлично, но в таблице ThrashType у меня есть дополнительный столбец с именем «Raport_raport_id».