問題タブ [objectstatemanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - .ApplyCurrentValues は、エンティティ キーが一致しないことを示す例外をスローします
これは私が得る例外です:
「提供されたオブジェクトのキーと一致するキーを持つオブジェクトが ObjectStateManager で見つかりませんでした。提供されたオブジェクトのキー値が、変更を適用する必要があるオブジェクトのキー値と一致することを確認してください。」
次の行で削除されます。
このページで、添付されていないためにエラーが発生する可能性があることを読みましたが、添付しようとすると別の例外が発生します。
「エンティティ オブジェクトは、IEntityChangeTracker の複数のインスタンスによって参照できません。」
これは、レコードがすでにモデルに関連付けられていることを意味します。
そして、それを切り離そうとすると、次のようになります:
「オブジェクトは ObjectStateManager にアタッチされていないため、デタッチできません。」
これは、テーブル「InputValue」を更新するコントローラーです。値に応じて、updatedTransactions 関数によって行われるテーブル「Transaction」も更新したいと考えています。
これは機能です:
// 新しい結果を生成したランダム コード
私はこれについて完全に無知です。どんな助けでも大歓迎です。
PS: ApplyCurrentValue を使用する他のコードは完全に機能します。
asp.net-mvc - 同じキーを持つオブジェクトがコントローラーの ObjectStateManager エラーに既に存在します
コントローラーに次の ActionResults があります (簡単にするために切り捨てられています)。投稿すると、エラーが発生します:同じキーを持つオブジェクトが ObjectStateManager に既に存在します。これは、GET ActionResult でエンティティを読み込んでいるためだと思います。
その後、投稿に再度読み込み、編集/保存しようとしています。新しい Maintenance エンティティをデータベースに追加し、(既存の) EquipmentTask エンティティの値を更新する必要があります。ObjectStateManager に既にある EquipmentTask への参照を取得するにはどうすればよいですか? または、EquipmentTask エンティティを MaintenanceViewModel のプロパティとして追加したほうがよいでしょうか? EquipmentTask エンティティの 1 つのプロパティ/列のみを更新したい
entity-framework - EntityFramework ObjectStateManager.DetectConflicts での Nullreference 例外
XML ファイルを取得してデータベースに格納する WCF Web サービスを作成しました。「低負荷」ではすべてが正常に機能しましたが、高負荷では予期しない動作が発生し、これまでのところ問題の正確な原因を特定できていません。誰か提案がありますか?
これは、ログに「時々」表示される例外です-10 000のうち25回のように:
これは時々発生することがわかり、現在、これが同時実行性と関係があるかどうかを調べています (他のスレッドが同じエンティティで動作している可能性があります)。どこを探すべきかについて、誰かが私にいくつかの指針を与えることができますか?
c# - ObjectStateManager をクリアする方法
ObjectStateManager をクリアしたいのでSaveChanges();
、DbContext を呼び出した後、次の行が結果を返さないようにします。
動作は、ObjectStateManager 内のすべてのオブジェクト (Added、Modified) が State changed を取得するUnchanged
ように見えるため、コードはそれらすべてを返します。クリアする方法はありますか?
コンテキストを再利用し、変更されていない状態のエンティティに対していくつかのことを行うため、これが必要ですが、ObjectSateManager は変更されていないエンティティで成長し、成長するため (SaveChanges 後にすべてが変更されないため)、1 つのエンティティに対して同じ作業を繰り返します。以上。
編集:
デタッチ方法が機能しない理由:
2 つのクラスがあるとします。
これで、更新または挿入する必要のあるいくつかの都市を含む Nation Item を SaveChanges に渡しました。
次のように仮定します。
これで、これらすべてのオブジェクトが ObjectStateManager 内の Unchanged 状態になりました。(SaveChanges 呼び出しの後)
私はそれらをループし、状態を未変更に設定します。これにより、すべての都市がNation = null
とを持つことになりNation.Cities being empty
ます。
c# - MVC5/EF6: ObjectStateManager で見つからなかったため、オブジェクトを削除できませんか?
HttpPost
MVC5 アプリで動作していた次のDelete() メソッドがあります。私の知る限りでは、このコントローラー、ビュー、さらにはモデルに関連するものは何も変更されていません。
UserManager ピース:
私のコードがIdentityResult result = await UserManager.DeleteAsync(applicationUser)
それに到達すると、すぐに下の Dispose() メソッドにジャンプし、Index View の読み込みの代わりに、次のように表示されます。Server Error in '/' Application.
The object cannot be deleted because it was not found in the ObjectStateManager.
誰かが私が間違っている場所を教えてもらえますか? このエラーは今まで見たことがありません。以前は、この DeleteConfirmed() コードは意図したとおりに機能していました。
編集:
Startup.cs :
EDIT2:
CustomAuthorization.cs (ヘルパー):
EDIT3
/App_Start/ の Startup.Auth.cs:
haim770 が指摘した解決策は、アクション メソッド内で 2 つの DbContext 参照を誤って使用していたことですDeleteConfirmed()
。
ApplicationUser applicationUser = db.Users.Find(id)
正しく変更されasync
、すべてが意図したとおりに機能します。ApplicationUser applicationUser = await UserManager.FindByIdAsync(id);
時間を割いて支援してくれたすべての人に感謝します!
c# - オブジェクトがデータベースで編集される前に、オブジェクトの値を取得するにはどうすればよいですか?
私は Web サービスをコーディングしています。Web API 2
オブジェクトを .xml ファイルで編集する前に、オブジェクトの値を取得する方法を教えてDbSet
ください。
私はいくつかの調査を行い、ObjectStateEntry
オブジェクトを使用する必要があると考えています。ただし、オブジェクトを使用してオブジェクトの値を取得する方法がわかりませんObjectStateEntry
。
これは、動作すると思われるいくつかのコードを含む単純な put 関数です。
次のエラーが表示されます。
'DataService.Context.DataServiceContext' には 'ObjectStateManager' の定義が含まれておらず、タイプ 'DataService.Context.DataServiceContext' の最初の引数を受け入れる拡張メソッド 'ObjectStateManager' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか? ?)
オブジェクトがデータベースで編集される前に、誰かがオブジェクトの値を取得するのを手伝ってくれませんか?