/// <summary> /// Deletes the messages matching the messagefilter passed in /// </summary> /// <param name="messageFilter">The message filter.</param> /// <param name="trans">The transaction to use.</param> private static void DeleteMessages(IPredicate messageFilter, Transaction trans) { // first delete all audit info for these message. This isn't done by a batch call directly on the db, as this is a targetperentity hierarchy // which can't be deleted directly into the database in all cases, so we first fetch the entities to delete. AuditDataMessageRelatedCollection messageAudits = new AuditDataMessageRelatedCollection(); trans.Add(messageAudits); // use a fieldcompareset predicate to get the auditdata related to this message and then delete all of them using the collection. messageAudits.GetMulti(new FieldCompareSetPredicate(AuditDataMessageRelatedFields.MessageID, MessageFields.MessageID, SetOperator.In, messageFilter)); messageAudits.DeleteMulti(); // delete all attachments for this message. This can be done directly onto the db. AttachmentCollection attachments = new AttachmentCollection(); trans.Add(attachments); // delete these directly from the db, using a fieldcompareset predicate attachments.DeleteMulti(new FieldCompareSetPredicate(AttachmentFields.MessageID, MessageFields.MessageID, SetOperator.In, messageFilter)); // delete the message/messages MessageCollection messages = new MessageCollection(); trans.Add(messages); // use the passed in filter to remove the messages messages.DeleteMulti(messageFilter); // don't commit the transaction, leave that to the caller. }
/// <summary> /// Deletes the messages matching the messagefilter passed in /// </summary> /// <param name="messageFilter">The message filter.</param> /// <param name="trans">The transaction to use.</param> private static void DeleteMessages(IPredicate messageFilter, Transaction trans) { // first delete all audit info for these message. This isn't done by a batch call directly on the db, as this is a targetperentity hierarchy // which can't be deleted directly into the database in all cases, so we first fetch the entities to delete. AuditDataMessageRelatedCollection messageAudits = new AuditDataMessageRelatedCollection(); trans.Add(messageAudits); // use a fieldcompareset predicate to get the auditdata related to this message and then delete all of them using the collection. messageAudits.GetMulti(new FieldCompareSetPredicate(AuditDataMessageRelatedFields.MessageID, MessageFields.MessageID, SetOperator.In, messageFilter)); messageAudits.DeleteMulti(); // delete all attachments for this message. This can be done directly onto the db. AttachmentCollection attachments = new AttachmentCollection(); trans.Add(attachments); // delete these directly from the db, using a fieldcompareset predicate attachments.DeleteMulti(new FieldCompareSetPredicate(AttachmentFields.MessageID, MessageFields.MessageID, SetOperator.In, messageFilter)); // delete the message/messages MessageCollection messages = new MessageCollection(); trans.Add(messages); // use the passed in filter to remove the messages messages.DeleteMulti(messageFilter); // don't commit the transaction, leave that to the caller. }