現在、削除されたアイテムの束を含むエンティティモデルがあります。状態は削除されます。それらを「元に戻す」方法はありますか?どの項目を元に戻したいのかわかりますが、元に戻す方法はわかりません。理想的には、私はそれを不変の状態に戻したいと思っています。エンティティの状態を変更します。
4
A
答えて
2
接続コンテキストをコミットしないという選択肢がありますか? - objectContext.SaveChanges()を呼び出さずにObjectContextを破棄します。もちろん、保存されていない変更があった場合でも、それは維持されません。
objectContext.DeleteObject(x)
を呼び出した場合は、元に戻したり変更を保存したりすることはできません。
ObjectStateEntry objectStateEntry = objectContext.ObjectStateManager.GetObjectStateEntry(x);
// objectStateEntry.State is not setable
ObjectStateEntryあなたは、理論的には、苦労して、オリジナルの変化を表し、コレクション、マイナス不要なものを再作成のObjectContextを終了し、新しいものを開いて、それらの変更を再構築することができるようにOriginalValuesプロパティを持っているマイナス不要そこにあるもの。おそらく面倒なことではないかもしれませんが、現時点で削除のためのマークを解除する方法はありません。
8
あなたは
objectContext.Detach(x)を持つオブジェクトXの削除取り消しをシミュレートすることができますobjectContext.DeleteObject(x)の、
を呼び出した後、 objectContext.Attach(x)
0
Context、ObjectSetまたはEntityObjectに対してRejectChangesメソッドを実装できます。 今私は、これらの方法のVBコードの書き込み:コンテキストでRejectChangesため 拡張方法:
<Extension()>
Sub RejectChanges(ByVal Context As ObjectContext)
Dim Collectin As IEnumerable(Of Object) = From e In Context.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Modified Or System.Data.EntityState.Deleted) Select e.Entity
Context.Refresh(RefreshMode.StoreWins, Collectin)
Dim AddedCollection As IEnumerable(Of Object) = From e In Context.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Added) Select e.Entity
For Each addedEntity As Object In AddedCollection
Context.Detach(addedEntity)
Next
End Sub
objectSetとでRejectChangesを実装するための拡張mehod:
<Extension()>
Sub RejectChanges(Of T As MyEntity)(ByVal Lst As ObjectSet(Of T))
Dim collection As IEnumerable(Of T) = From o In Lst.AsEnumerable() Where o.EntityState = EntityState.Modified Or o.EntityState = EntityState.Deleted Select o
Lst.Context.Refresh(RefreshMode.StoreWins, collection)
Dim AddedCollection As IEnumerable(Of T) = (From e In Lst.Context.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Added) Select e.Entity).ToList().OfType(Of T)()
For Each entity As T In AddedCollection
Lst.Context.Detach(entity)
Next
End Sub
、最終的にはEntityObjectのためのRejectChanges実装:
を<Extension()>
Sub RejectChanges(ByVal entity As EntityObject, ByVal Context As ObjectContext)
If entity.EntityState = EntityState.Modified OrElse entity.EntityState = EntityState.Deleted Then
Context.Refresh(RefreshMode.StoreWins, entity)
ElseIf entity.EntityState = EntityState.Added Then
Context.Detach(entity)
End If
End Sub
bye。 [Iman Shabanzade]
関連する問題
- 1. 状態変更後の初期状態を返します
- 2. マルチティアアプリケーションのエンティティ状態の変更を管理する場所は?
- 3. 状態変更コード
- 4. 変更状態(JS)
- 5. EF4 - エンティティ状態を変更するContext.Entryを使用できません
- 6. 子コンポーネントの親コンポーネントの状態を変更し、その状態をプロパティとして渡し、子コンポーネントの状態を変更します。
- 7. 休止状態:休止状態の接続を変更する
- 8. ObjectStateManagerとDetachedエンティティの状態
- 9. breeze jsエンティティ状態のデバッグ
- 10. エンティティのRedux UI状態
- 11. エンティティ状態トランザクションのキャプチャ
- 12. 状態モナド:値を変更せずに状態を変更する
- 13. 状態パラメータを変更し、状態をリロードしません。実現可能か?
- 14. イオンボタン状態の変更
- 15. Redux-Sagaの状態変更
- 16. Reduxレデューサーオン状態の変更
- 17. Arduinoトグルスイッチの状態変更
- 18. ドラフトエディタ状態の親状態を更新していますか?
- 19. 裏面のイオンネストされた状態は状態を変更しません。
- 20. エンティティフレームワーク\ sqliteのエンティティの状態を変更する最速の方法
- 21. リアクションネイティブ状態変数を変更する
- 22. 休止状態のエンティティで列名を変更する方法は?
- 23. ルート変更時にRedux状態を更新します
- 24. 状態を更新していない状態を更新しています
- 25. カスタムUIButtonの状態を変更する
- 26. 変更UIButtons層は状態
- 27. CUPS状態変更サブスクリプション
- 28. React - アイテムまたは親の状態を変更しますか?
- 29. コンポーネントのプロパティと状態を繰り返し変更します
- 30. コントロールのキャプションを見つけて状態を変更します。
これはあまりにも悪いことです。私には方法がないと感じました。残念ながら、コンテキストをクリアすることはできないので、それは本当にオプションではありません。今、私は削除される前に修正されるべきオブジェクトのリストを実装しました。それは実際には本当に大きな混乱であり、何かが変更されていないとマークすることはできません。 – JohnathanKong
Entity Framework Designブログhttp://blogs.msdn.com/efdesign/は "VisualStudio 2010と.NET Framework 4.0の側面に沿って出荷されるセルフトラッキングエンティティアーキテクチャ"と言っています。 "... 必要に応じてこの状態を変更するために、各セルフトラッキングエンティティにコンビニエンスメソッドがあります(Delete()およびSetUnchanged())。) この機能はEF2で利用できるようです – Tion