データのシードに問題があり、非常に小さなアプリケーションで問題を再現できました。
あなたがこのシードメソッドを持っているとすると:
protected override void Seed(JunkContext context)
{
context.Junks.AddOrUpdate(x => x.Name,
new Junk()
{
Name = "BANANAS!!",
Item = new JunkItem()
{
Name = "APPLES!!!"
}
}
);
}
PMCでupdate-databaseを実行すると、すべてのエンティティが正常に作成されます。良い。
しかし、データベースを更新したい場合は、シードメソッドが次のようになっていると言います。
protected override void Seed(JunkContext context)
{
context.Junks.AddOrUpdate(x => x.Name,
new Junk()
{
Name = "BANANAS!!",
Item = new JunkItem()
{
Name = "ORANGES!!!"
}
}
);
}
子エンティティは更新されません。再シードできる唯一の方法は、データベースをワイプしてすべてを再シードすることだと思われます。なぜこれが期待どおりに機能しないのかは理解できたと思いますが、おそらく誰かが私を正しい方向に向けて、それに応じてこのシードメソッドを更新することができます。私はcontext.JunkItemsを書き出すことができることを知っています。(...)しかし、それは「AddOrUpdate」の目的全体を打ち負かすようです。
子エンティティごとに「キー」を定義する必要があると思います。例:「ジャンク」はx => x.Nameを取得しますが、「ジャンクアイテム」は現在「キーを更新」する必要があります。それが問題だと思いますが、どうすればそれを処理できますか?