大学のプロジェクトとして .net アプリケーションを作成していますが、自己追跡エンティティ セットに問題があります。レコードを選択し、wcf サービスを介して渡し、いくつかの変更を加えて、サーバーに再度渡します。何が変更されたかを比較したいので、コンテキストから同じレコードをもう一度選択して (これは古い値を持つレコードです)、比較します。次に、サービスを介して渡されたエンティティとコンテキストで ApplyChanges を呼び出したいと比較した後、エラーが発生しました。
オブジェクトのキー値が ObjectStateManager 内の別のオブジェクトと競合するため、AcceptChanges を続行できません。AcceptChanges を呼び出す前に、キー値が一意であることを確認してください。
同じエンティティを2回ロードしたためだと思います(変更前と変更後)。変更を比較するより良い方法はありますか (別の db テーブルで変更履歴を作成する必要があります)? また、2 つのクライアントが同じレコードを取得し、最初のクライアントがそれを変更して db に保存したい場合にも、このエラーが発生しませんか? 私は.net 4.0を使用しています。