含めてください:
- エンティティの定義
- コンテキストからのマッピングクラス/構成
- SQLテーブルの定義
BackPropagateServerGen
スタックトレースを見ると、重要なのはBackPropagateServerGen
です。 。
Entity Frameworkはデータベースに対して更新を実行していますが、複合キー値の1つ(おそらくCOPY_ID)が実際にはUPDATE呼び出しによって変更されています。このサーバーで生成された値はSQL呼び出しから返され、EntityFrameworkはキー値がその下から変更されていると文句を言っています。
したがって、COPY_ID複合キー値はサーバーで生成された識別子として定義されていると思いますが、これらの一方または両方が発生しています:
- エンティティフレームワークがバニラUPDATEに期待するものを妨害しているビューまたはストアドプロシージャにマッピングしています
- 結果を妨害している1つ以上のトリガーがテーブル、ビュー、またはストアドプロシージャにあります。
トリガーがある場合は、一時的に無効にして、問題が停止するかどうかを確認します。
ビューまたはストアドプロシージャにマッピングする場合は、可能であればテーブルに直接マッピングしてみてください。
コードによって実行されているSQLをキャプチャするために必要なプロファイリングツールを使用します。
概要
UPDATE呼び出しは実際にはデータベースに到達していると思いますが、返される結果はキー値を変更し、Entity Frameworkが失敗し、おそらくUPDATEトランザクションをロールバックします(使用しているEFのバージョンによって異なります)。