在迁移之前,我在表 Work 和 Factory 之间存在一对多的关系:
public class Work
{
public int WorkId { get; set; }
public string Name { get; set; }
public virtual List<Factory> MyFactory { get; set; }
}
和:
public class Factory
{
public int FactoryId { get; set; }
public string Name { get; set; }
public virtual Work ParentWork { get; set; }
}
然后我尝试将关系更改为 1 到 1:
public class Work
{
public int WorkId { get; set; }
public string Name { get; set; }
[Required]
public virtual Factory MyFactory { get; set; }
}
public class Factory
{
public int FactoryId { get; set; }
public string Name { get; set; }
public virtual Work ParentWork { get; set; }
}
当我尝试使用以下方法创建迁移时:
添加迁移 MyMigration
我收到以下错误:
ALTER TABLE 语句与 FOREIGN KEY 约束“FK_dbo.Work_dbo.Factory_WorkId”冲突。数据库“EntityFrameworkLab.MyContext”、表“dbo.Factory”、列“FactoryId”中发生冲突
现在,我有几个问题:
1)为什么不能创建迁移,而模型是有效的?
2) 我应该在代码中实现哪些更改?
3)如果我尝试手动还原更改,则会出现相同的错误消息,但这次我尝试执行以下操作:
更新数据库-详细