Example #1
0
		/// <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.
		}
Example #2
0
        /// <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.
        }