显然,可能有更好的方法来做到这一点,但由于这是令人惊讶的顶级谷歌帐户,我认为在阅读这些答案后提及我的想法会很好:
这是我面临的问题:我首先更改了由 EF6 代码生成的 FK,然后遇到了错误:
Unable to determine the relationship represented by navigation property 'Account.SalaryIncomes' of type 'ICollection<Person>'. Either manually configure the relationship, or ignore this property using the '[NotMapped]' attribute or by using 'EntityTypeBuilder.Ignore' in 'OnModelCreating'.
为了解决这个错误,我尝试了许多定义映射的方法,但是我最终删除了我的 Person 表,并且在完全删除关系以尝试从头开始之后,错误得到了解决。但是,在更新数据库时,它抱怨“人”不存在 - 这导致我来到这里。
在查看了这些答案之后,我决定我懒得重新加载数据并认为迁移生成了 C# UP() 和 Down() 方法 - 我想,也许我可以参考另一个迁移......在提取上下代码之后进入该迁移中的公共方法,并引用新迁移中的方法-更新有效,然后创建了人员。为了安全起见-我将新调用包装在 try catch... 我的新 UP 方法是否如下所示:
protected override void Up(MigrationBuilder migrationBuilder)
{
try
{
new AddPeople().CreatePersonTable(migrationBuilder);
}
catch { }
// Origional generated migration code
}
这个答案带有我没有测试过下次是否会覆盖此迁移(丢失代码)的 caviat - 但是,如果迁移按顺序运行,那么您实际上可以运行一次,然后将其删除后。