エンティティフレームワークでエンティティを保存するとき、当然、指定されたエンティティのみを保存しようとするものだと思いました。ただし、そのエンティティの子エンティティも保存しようとしています。これは、あらゆる種類の整合性の問題を引き起こしています。保存するエンティティのみを保存し、すべての子オブジェクトを無視するようにEFに強制するにはどうすればよいですか?
プロパティを手動でnullに設定すると、「操作に失敗しました。1つ以上の外部キープロパティがnullにできないため、関係を変更できませんでした。」というエラーが表示されます。EFが子オブジェクトをそのままにしておいたので、子オブジェクトを特にnullに設定しているため、これは非常に逆効果です。
なぜ子オブジェクトを保存/挿入したくないのですか?
これはコメントで前後に議論されているので、子オブジェクトをそのままにしておく理由を説明します。
私が作成しているアプリケーションでは、EFオブジェクトモデルはデータベースから読み込まれていませんが、フラットファイルの解析中にデータオブジェクトとして使用されています。子オブジェクトの場合、これらの多くは、親テーブルのさまざまなプロパティを定義するルックアップテーブルを参照します。たとえば、プライマリエンティティの地理的な場所です。
私はこれらのオブジェクトを自分で作成したので、EFはこれらが新しいオブジェクトであると想定し、親オブジェクトと共に挿入する必要があります。ただし、これらの定義はすでに存在しており、データベースに重複を作成したくありません。私は、EFオブジェクトを使用して、ルックアップを実行し、メインテーブルエンティティに外部キーを設定しています。
実際のデータである子オブジェクトがあったとしても、最初に親を保存し、主キーまたはEFを取得する必要があるだけで、混乱を招くようです。これがいくつかの説明を与えることを願っています。