1

移行前は、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

4

0 に答える 0