/// <summary> /// Puts an entity from this table into a 'pending delete' state. The removed entity will not be observed /// missing from query results until after SubmitChanges() has been called. /// </summary> /// <param name="item"></param> public void DeleteOnSubmit(TEntity entity) { if (entity == null) { throw Error.ArgumentNull("entity"); } CheckReadOnly(); context.CheckNotInSubmitChanges(); context.VerifyTrackingEnabled(); TrackedObject tracked = this.context.Services.ChangeTracker.GetTrackedObject(entity); if (tracked != null) { if (tracked.IsNew) { tracked.ConvertToRemoved(); } else if (tracked.IsPossiblyModified || tracked.IsModified) { tracked.ConvertToDeleted(); } } else { throw Error.CannotRemoveUnattachedEntity(); } }
public void DeleteOnSubmit(TEntity entity) { if ((object)entity == null) { throw System.Data.Linq.Error.ArgumentNull("entity"); } this.CheckReadOnly(); this.context.CheckNotInSubmitChanges(); this.context.VerifyTrackingEnabled(); TrackedObject trackedObject = this.context.Services.ChangeTracker.GetTrackedObject((object)entity); if (trackedObject == null) { throw System.Data.Linq.Error.CannotRemoveUnattachedEntity(); } if (trackedObject.IsNew) { trackedObject.ConvertToRemoved(); } else { if (!trackedObject.IsPossiblyModified && !trackedObject.IsModified) { return; } trackedObject.ConvertToDeleted(); } }
private void ResolveDelete() { if (!TrackedObject.IsDeleted) { TrackedObject.ConvertToDeleted(); } Session.Context.Services.RemoveCachedObjectLike(TrackedObject.Type, TrackedObject.Original); TrackedObject.AcceptChanges(); IsResolved = true; }
/// <summary> /// Resolve a conflict where we have updated an entity that no longer exists /// in the database. /// </summary> private void ResolveDelete() { Debug.Assert(this.IsDeleted); // If the user is attempting to update an entity that no longer exists // in the database, we first need to [....] the delete into the local cache. if (!trackedObject.IsDeleted) { trackedObject.ConvertToDeleted(); } // As the object have been deleted, it needs to leave the cache this.Session.Context.Services.RemoveCachedObjectLike(trackedObject.Type, trackedObject.Original); // Now that our cache is in [....], we accept the changes this.trackedObject.AcceptChanges(); this.isResolved = true; }