代碼來源:BulkDeleteRequest 類
進行了簡單改寫,實現了批量刪除功能,直接上代碼:
// Create a condition for a bulk delete request.
// NOTE: This sample uses very specific queries for deleting records
// that have been manually exported in order to free space.
//QueryExpression opportunitiesQuery = BuildOpportunityQuery();
//上面一句代碼其實就是構建一個查詢語句,我以以下的方法直接替代
QueryExpression opportunitiesQuery = new QueryExpression();
opportunitiesQuery.EntityName = "";//要查詢的實體
opportunitiesQuery.ColumnSet = new ColumnSet("");//要查詢的字段
opportunitiesQuery.Criteria.FilterOperator = LogicalOperator.And;//查詢條件
opportunitiesQuery.Criteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));
// Create the bulk delete request.
BulkDeleteRequest bulkDeleteRequest = new BulkDeleteRequest();
// Set the request properties.
bulkDeleteRequest.JobName = "Backup Bulk Delete";
// Querying activities
bulkDeleteRequest.QuerySet = new QueryExpression[]
{
opportunitiesQuery,
//以下的代碼應該是查詢相關連的記錄
//BuildActivityQuery(Task.EntityLogicalName),
//BuildActivityQuery(Fax.EntityLogicalName),
//BuildActivityQuery(PhoneCall.EntityLogicalName),
//BuildActivityQuery(Email.EntityLogicalName),
//BuildActivityQuery(Letter.EntityLogicalName),
//BuildActivityQuery(Appointment.EntityLogicalName),
//BuildActivityQuery(ServiceAppointment.EntityLogicalName),
//BuildActivityQuery(CampaignResponse.EntityLogicalName),
//BuildActivityQuery(RecurringAppointmentMaster.EntityLogicalName)
};
// Set the start time for the bulk delete.
bulkDeleteRequest.StartDateTime = DateTime.Now;
// Set the required recurrence pattern.
bulkDeleteRequest.RecurrencePattern = String.Empty;
// Set email activity properties.
bulkDeleteRequest.SendEmailNotification = false;
//輸入當前用戶的id值,經過實測雖然不需要發送郵件但這個字段還是必填的
//ToRecipients的屬性解釋如下,注意Required
// Gets or sets an array of IDs for the system users(users) who are listed in the
// To box of an email notification. Required.
bulkDeleteRequest.ToRecipients = new Guid[] { currentUserId };
bulkDeleteRequest.CCRecipients = new Guid[] { };
// Submit the bulk delete job.
// NOTE: Because this is an asynchronous operation, the response will be immediate.
//也可以簡單一點,不需要返回值
//_bulkDeleteResponse =
// (BulkDeleteResponse)_serviceProxy.Execute(bulkDeleteRequest);
service.Execute(bulkDeleteRequest);
Console.WriteLine("The bulk delete operation has been requested.");