You can implement the RejectChanges method for your Context, ObjectSet or EntityObject. Now I am writing the VB code of these methods: Extension method for RejectChanges in context:
<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
The mehod extension for implementing RejectChanges in an ObjectSet:
<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
and finally, the implementation of RejectChanges for EntityObject:
<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
Goodbye. [Iman Shabanzade]
source share