// 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; } }