예제 #1
0
        // Deletes a given object from the database, object in memory persists and could be recommited.
        public void Delete(DatabaseTable dbObject)
        {
            try {
                if (dbObject.ID == null)
                {
                    logger.Warn("Tried to delete an uncommited object...");
                    return;
                }

                dbObject.BeforeDelete();

                string query = "delete from " + GetTableName(dbObject) + " where ID = " + dbObject.ID;
                logger.Debug("DELETING: " + dbObject);
                logger.Debug(query);

                deleteAllRelationData(dbObject);
                lock (lockObject) dbClient.Execute(query);

                cache.Remove(dbObject);
                dbObject.ID = null;
                dbObject.AfterDelete();

                if (ObjectDeleted != null)
                {
                    logger.Debug("Calling listeners for " + dbObject.ToString());
                    ObjectDeleted(dbObject);
                }
            }
            catch (SQLiteException e) {
                logger.ErrorException("Error deleting object from " + GetTableName(dbObject) + " table.", e);
                return;
            }
        }