因此,我今天遇到了奇怪的情况 - 在用新表更新现有数据库时,我在其中一个表中获得了额外的列。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 (下回答第一个评论;更易读版):
学分格雷格胶这个(https://stackoverflow.com/users/425823/greg-gum)
的问题:您已经打乱了你的迁移和你想 而不删除现有的表重置。问题:您不能 重置数据库中现有表的迁移,因为EF想要 从头开始创建表。解决办法:从Migrations_History表中删除现有的迁移 。从 迁移文件夹中删除现有的迁移。运行添加迁移重置。这将在您的迁移文件夹中创建一个 迁移,其中包括创建表 (但它不会运行它,因此它不会出错。)现在需要 在MigrationHistory表中创建初始行,以便EF具有 快照的现状。如果您应用 迁移,EF将执行此操作。但是,由于数据库中已存在表,因此无法应用刚刚创建的迁移 。因此请进入迁移 并注释掉“Up”方法中的所有代码。现在运行 update-database。它将应用迁移(实际上并不是 更改数据库)并在MigrationHistory中创建快照行。 您现在已重置您的迁移,并可能继续进行正常的 迁移。
然后它一切都很完美,但在ThrashType表中我有另外一个名为“Raport_raport_id”的列。