0

別のテーブル B との外部キー関係を持つテーブル A があります。まず、生の SQL を使用して A のエントリ (a) を削除します。後で、a が指していたエントリであったテーブル B のエントリ b を削除します。これを行うと、EntityFramework は次のエラー メッセージで失敗します。

エンティティ タイプ 'B' と 'A' の間の関連付けは切断されていますが、関係は 'Required' としてマークされているか、外部キーが null 許容ではないため、暗黙的に必須です。

コンテキストがデータベースと同期していないためだと思います。これを修正するにはどうすればよいですか?

4

1 に答える 1

0

あなたの仮定は正しいです。生の SQL を使用してデータベース内のデータを変更すると、コンテキストはこれらの変更を認識しません。ドキュメントから:

ExecuteSqlCommand を使用してデータベース内のデータに加えられた変更は、エンティティがデータベースからロードまたは再ロードされるまで、コンテキストに対して不透明であることに注意してください。

データベースからコンテキストを更新するように EntityFramework に指示する必要があります。これは次のように実行できます (reqこの SQL コマンドによって値のみが削除されると仮定します)。

_db.Database.ExecuteSqlCommand($"DELETE FROM \"schema_name\".\"table_A\"");
_db.Entry(req).Reload();
于 2019-05-19T23:53:07.663 に答える