/// <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 attachment with the id specified. /// </summary> /// <param name="attachmentID">The attachment ID.</param> public static void DeleteAttachment(int attachmentID) { // delete the attachment directly from the db, without loading it first into memory, so the attachment won't eat up memory unnecessary. AttachmentCollection attachments = new AttachmentCollection(); attachments.DeleteMulti((AttachmentFields.AttachmentID == attachmentID)); }
/// <summary> /// Deletes the attachment with the id specified. /// </summary> /// <param name="attachmentID">The attachment ID.</param> public static void DeleteAttachment(int attachmentID) { // delete the attachment directly from the db, without loading it first into memory, so the attachment won't eat up memory unnecessary. AttachmentCollection attachments = new AttachmentCollection(); attachments.DeleteMulti((AttachmentFields.AttachmentID == attachmentID)); }
/// <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. }