IObjectSpace.GetObjectsToDelete(Boolean) Method
Returns a collection of persistent objects that will be deleted when the current transaction is committed, including objects that will be deleted in the parent transaction(s), optionally.
Namespace: DevExpress.ExpressApp
Assembly: DevExpress.ExpressApp.v24.1.dll
NuGet Package: DevExpress.ExpressApp
Declaration
Parameters
Name | Type | Description |
---|---|---|
includeParent | Boolean | true, to include persistent objects that will be deleted in the parent transaction(s); otherwise, false. |
Returns
Type | Description |
---|---|
ICollection | The collection of persistent objects that will be deleted when the current transaction is committed. |
Remarks
When an object is deleted, it’s not deleted from the database immediately. It’s marked as an object to be deleted and removed from the database the next time the IObjectSpace.CommitChanges method is called.
The GetObjectsToDelete
method is intended to provide a collection of objects that are marked as deleted in the current transaction.
The code below demonstrates how you can use the GetObjectsToDelete
method in your application:
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Blazor;
using YourSolutionName.Module.BusinessObjects;
using System.ComponentModel;
namespace YourSolutionName.Module.Controllers;
public class HandleCommitController :ObjectViewController<DetailView, Contact> {
protected override void OnActivated() {
base.OnActivated();
View.ObjectSpace.Committing += ObjectSpace_Committing;
}
private void ObjectSpace_Committing(object sender, CancelEventArgs e) {
var os = (IObjectSpace)sender;
var objectsToDelete = os.GetObjectsToDelete(includeParent: true);
foreach(var item in objectsToDelete) {
Contact deletedContact = item as Contact;
if(deletedContact != null && deletedContact.FirstName == "NOT FOR DELETE") {
e.Cancel = true;
break;
}
}
}
protected override void OnDeactivated() {
View.ObjectSpace.Committing -= ObjectSpace_Committing;
}
}
In XPO applications with Deferred Deletion enabled, the GetObjectsToDelete
method returns an empty collection. In such scenarios, use the GetObjectsToSave(Boolean) method instead.