/// <summary>
 /// Delete single record from database
 /// </summary>
 /// <param name="record">Record to delete</param>
 public void Delete(BacktraceDatabaseRecord record)
 {
     if (BacktraceDatabaseContext != null)
     {
         BacktraceDatabaseContext.Delete(record);
     }
 }
        /// <summary>
        /// Validate database size - check how many records are stored
        /// in database and how much records need space.
        /// If space or number of records are invalid
        /// database will remove old reports
        /// </summary>
        private bool ValidateDatabaseSize()
        {
            //check how many records are stored in database
            //remove in case when we want to store one more than expected number
            //If record count == 0 then we ignore this condition
            var noMoreSpaceForReport = ReachedMaximumNumberOfRecords();

            //check database size. If database size == 0 then we ignore this condition
            //remove all records till database use enough space
            var noMoreSpace = ReachedDiskSpaceLimit();

            if (noMoreSpaceForReport || noMoreSpace)
            {
                //if your database is entry or every record is locked
                //deletePolicyRetry avoid infinity loop
                int deletePolicyRetry = 5;
                while (ReachedDiskSpaceLimit() || ReachedMaximumNumberOfRecords())
                {
                    var lastRecord = BacktraceDatabaseContext.LastOrDefault();
                    if (lastRecord != null)
                    {
                        BacktraceDatabaseContext.Delete(lastRecord);
                        BacktraceDatabaseFileContext.Delete(lastRecord);
                    }
                    deletePolicyRetry--;
                    if (deletePolicyRetry == 0)
                    {
                        break;
                    }
                }
                return(deletePolicyRetry != 0);
            }
            return(true);
        }
예제 #3
0
 /// <summary>
 /// Delete single record from database
 /// </summary>
 /// <param name="record">Record to delete</param>
 public void Delete(BacktraceDatabaseRecord record)
 {
     BacktraceDatabaseContext?.Delete(record);
 }