コードファーストのエンティティフレームワークがあります。
他のテーブルへの外部キーを持つテーブルから行を削除しようとすると、例外が発生します。データを再度ロードしようとしたときに例外を処理した後、削除しようとしている選択したアイテムのナビゲーション キーがnullになる
なぜこれが起こるのか、どうすれば修正できますか。
削除プロセスはとても簡単です:
public class Person
{
public int ID {get;set;}
public string Name {get;set;}
public Something Something {get;set;}
public ICollection<Profile> Profile {get;set;}
}
try
{
var p = en.Person.First(t => t.ID == 14);
//p.Something here is not null;
en.Remove(p)
en.SaveChanges(); // I'm get an exception here
}
catch { /*error handling */}
finally
{
var p = en.Person.First(t => t.ID == 14);
//but p.Something here is null;
}
しかし、en.SaveChange()で例外が発生します。
DELETE ステートメントが FOREIGN KEY 制約 "FK_person_profile
これは私のクラスのサンプルです。
そのSomeThingプロパティはナビゲーション キーです。最初にSomething have valueを選択します。しかし、2番目の選択では、最終的にブロックがnullになります。
削除の問題を修正した後、オブジェクトをデータベースに追加した後に同じ問題が発生しました。そのリロード機能は役に立ちません。
なにか提案を?