Exemple #1
0
        /// <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();
            }
        }
Exemple #2
0
        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;
 }
Exemple #4
0
        /// <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;
        }