移行前は、WorkテーブルとFactoryテーブルの間に1対多の関係がありました。
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
次のエラーが発生しました。
ALTERTABLEステートメントがFOREIGNKEY制約「FK_dbo.Work_dbo.Factory_WorkId」と競合しました。データベース「EntityFrameworkLab.MyContext」、テーブル「dbo.Factory」、列「FactoryId」で競合が発生しました
今、私はいくつかの質問があります:
1)モデルが有効であるのに、なぜ移行を作成できなかったのですか?
2)コードにどのような変更を実装する必要がありますか?
3)手動で変更を元に戻そうとすると、同じエラーメッセージが表示されますが、今回は次のことを実行しようとしています。
update-database -verbose