Skip to content

Delete Relation using condition

The API deletes objects from a relationship with their parent. The objects are identified implicitly through a whereClause condition.

Blocking API

int result = Backendless.Data.Of( "TABLE-NAME" ).DeleteRelation( 
                               Dictionary<string, object> parentObject,
                               string relationColumnName,
                               string whereClause );
int result = Backendless.Data.Of<E>().DeleteRelation( 
                              E parentObject,
                              string relationColumnName,
                              string whereClause );

Non-Blocking API

Backendless.Data.Of( "TABLE-NAME" ).DeleteRelation( 
                  Dictionary<string, object> parentObject,
                  string relationColumnName,
                  string whereClause,
                  AsyncCallback<int> callback );
Backendless.Data.Of<E>().DeleteRelation( 
                 E parentObject,
                 string relationColumnName,
                 string whereClause,
                 AsyncCallback;<int> callback );

where:

Argument                Description
TABLE-NAME Name of the table where the parent object is stored.
E .NET class of the parent object. The class name identifies the table where the parent object is stored.
parentObject The object for which the relation with the identified children will be deleted. When this argument is an instance of Dictionary<string, object> (for the dictionary-based approach), it must contain the "objectId" property.
relationColumnName Name of the column representing the relation. Relationship between the child objects identified by whereClause will be deleted for this column in parentObject.
whereClause a where clause condition identifying the objects in the child table which will be removed from the relation to the parent object.
callback a responder object which will receive a callback when the relation has been deleted or if an error occurs. Applies to the asynchronous method only.

Return Value

Number of child objects removed from the relationship. The asynchronous call receives the return value through a callback executed on the AsyncCallback object.

Example

The following example deletes a relation between a Person object and all the related objects in the related table identified by column "user" which match the provided query:

name='Joe' or name = 'Frank' 

As a result of the operation, all related objects where the name property is either Joe or Frank will be deleted from the relation.

Dictionary<string, object> parentObject = new Dictionary<string, object>();
parentObject[ "objectId" ] = "41230622-DC4D-204F-FF5A-F893A0324800";

AsyncCallback<int> deleteRelationCallback = new AsyncCallback<int>(
  howMany =>
  {
    System.Console.WriteLine( String.Format( "Server has removed {0} objects from the relation", howMany ) );
  },
  error =>
  {
    System.Console.WriteLine( "Server returned an error " + error.Message );
  } );

Backendless.Data.Of( "Person" ).DeleteRelation( parentObject, 
                  "user", 
                  "name = \"Joe\" or name = \"Frank\"", 
                  deleteRelationCallback );
Person personObject = // personObject retrieval is out of scope in this example

AsyncCallback<int> deleteRelationCallback = new AsyncCallback<int>(
  howMany =>
  {
    System.Console.WriteLine( String.Format( "Server has removed {0} objects from the relation", howMany ) );
  },
  error =>
  {
    System.Console.WriteLine( "Server returned an error " + error.Message );
  } );

Backendless.Data.Of<Person>().DeleteRelation( 
                  personObject, 
                  "user", 
                  "name = \"Joe\" or name = \"Frank\"",
                  deleteRelationCallback );