EF の子オブジェクト処理を理解する
Entity Framework (EF) は、デフォルトで保存時にメイン エンティティと一緒に子エンティティを保存しようとします。挿入操作。ただし、特定のシナリオでは、この動作によって問題が発生する可能性があります。
問題の説明
エンティティを保存するとき、EF はその子エンティティも保存しようとします。ただし、場合によっては、子エンティティがすでに存在していたり、挿入が意図されていない場合もあります。この動作は整合性の問題につながり、逆効果になる可能性があります。
保存から除外する理由
開発者が子オブジェクトを保存から除外したい理由はさまざまです。手術。たとえば、子オブジェクトはデータベースにすでに存在するルックアップ値を表す場合があり、重複を挿入することは望ましくありません。
外部キー オーバーライド: 包括的なソリューション
EF が子オブジェクトを保存できないようにするには、外部キー プロパティを使用することをお勧めします。リレーションシップの外部キーを指定することにより、EF は、子エンティティがオブジェクト自体ではなく別の列によって識別されることを理解します。
保存操作中に、子オブジェクトを明示的に null に設定し、適切な外部キーを割り当てます。キーの値。このアプローチは、保存中に子オブジェクトを変更してはならないことを EF に明確に示します。
public School Insert(School newItem, int cityId) { if (cityId <= 0) { throw new Exception("City ID not provided"); } newItem.City = null; // Exclude child object from save newItem.City_Id = cityId; // Specify foreign key value using (var context = new DatabaseContext()) { context.Set<School>().Add(newItem); context.SaveChanges(); return newItem; } }
外部キー アプローチの利点
外部キー アプローチには、いくつかの利点があります。利点:
外部キーのアプローチを採用することで、開発者は EF の子オブジェクトの処理をより詳細に制御できるようになり、予期せぬ問題が発生することなく、目的のデータベース操作を実現できるようになります。
以上が保存操作中に Entity Framework が子オブジェクトを保存しないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。