Skip to main content
All docs
V25.1
  • .NET 8.0+

    Session.DeleteAsync(ICollection, CancellationToken) Method

    Asynchronously deletes the specified persistent objects and their aggregated objects from the data store.

    Namespace: DevExpress.Xpo

    Assembly: DevExpress.Xpo.v25.1.dll

    NuGet Package: DevExpress.Xpo

    Declaration

    public Task DeleteAsync(
        ICollection objects,
        CancellationToken cancellationToken = default(CancellationToken)
    )

    Parameters

    Name Type Description
    objects ICollection

    A collection of persistent objects to delete from the data store.

    Optional Parameters

    Name Type Default Description
    cancellationToken CancellationToken null

    A CancellationToken object that delivers a cancellation notice to the running operation.

    Returns

    Type Description
    Task

    A Task that deletes the specified persistent objects and their aggregated objects from the data store.

    Remarks

    Below is an example of using the DeleteAsync method. Here, session is the Session instance.

    using System.Threading.Tasks;
    // ...
    private async Task DeleteOrders() {
        await this.UnitOfWork.DeleteAsync(this.SelectedOrders);
    }
    

    If a persistent object has the DeferredDeletionAttribute, the DeleteAsync method doesn’t actually remove the underlying database record. Instead, it marks the record as deleted and writes a reference to this object for later use by the Session.PurgeDeletedObjects method. You should clear all references to the object to be deleted. Otherwise, the object will not be purged. To persist the deleted state, save the object by calling its XPBaseObject.Save method.

    If the DeferredDeletionAttribute isn’t specified, the DeleteAsync method removes the underlying database record which corresponds to the persistent object unless there are references to this object.

    Note

    When an object with Deferred Deletion enabled is deleted, it is removed from associated collections. Associations cannot be recreated automatically when you restore a deleted object. This behavior is by design, because the Deferred Deletion feature is not intended for object restoration, but for overcoming complex foreign index constraints at the database level.

    See Also