明らかにこれを行うためのより良い方法があるかもしれませんが、これは驚くほどトップのGoogleアカウントだったので、これらの回答を読んだ後に私が持っていたアイデアに言及するのは良いことだと思いました:
ここに私が直面した問題があります: 最初に 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
}
この回答には、この移行が次回オーバーライドされるかどうかを確認するためにテストしていないキャビアが付属しています(コードが失われます)-ただし、移行が順番に実行されている場合は、実際にこれを一度実行してから削除することができます後。