How to: Bulk Delete Artificial Types
Bulk deleting objects of artificial types is the same as bulk deleting objects of regular entity types.
A good approach for working with bulk operations and artificial types is to take advantage over Dynamic LINQ.
In order to perform a bulk delete operation on an artificial type, you can use the following workflow:
To use the DeleteAll() method you need to add a using / Imports clause to the Telerik.OpenAccess namespace in your code.
- Define a query that will be the source for the delete operation
-
Perform the operation
using System.Linq.Dynamic; using Telerik.OpenAccess; using (FluentModel context = new FluentModel()) { //Define a query that is the source of the operation. //All matching elements will be affected by the DeleteAll operation var query = context.GetAll("Car").Where("CarYear < {0}", 1990) //Perform a bulk delete operation int deleted = query.DeleteAll(); Console.WriteLine("deleted cars: {0}", deleted); }
Due to limitations in VB the extension methods on objects need to be called as static methods.
Imports System.Linq.Dynamic Imports Telerik.OpenAccess Using context = New FluentModel() ' Define a query that is the source of the operation. ' All matching elements will be affected by the DeleteAll operation Dim query As IQueryable(Of Car) = context.GetAll("Car").Where("CarYear < {0}", 1990) ' Perform a bulk delete operation Dim deleted = query.DeleteAll() Console.WriteLine("deleted cars {0}", deleted) End Using
That operation will attempt to remove all cars produced before 1990 from the SofiaCarRental database. Any violations of the referential integrity in the storage model will be reported to the user with an InvalidOperationException exception and the transcation will be rolled back.
Optionally, you can adjust the command timeout on bulk operation level as described in How to: Set The Timeout / On Query Level, if the execution of the commands it contains is expected to take long time. By default, it is the one specified in Runtime Configuration. If the command exceeds the timeout it will be terminated and a backend specific exception will be thrown.