private bool InternalRemoveDatabase(DatabaseDB database) { string serverName = "Serveur non trouvé"; try { // Obtention du serveur DatabaseServerName databaseServerName = this.db.DatabaseServerNames.Find(database.ServerId); if (databaseServerName == null) { return(false); } // Obtention du serveur réel : MySQL, SQL Server, ... avec son adresse IP DatabaseManagement management = DatabaseManagement.CreateDatabaseManagement(databaseServerName.Code, databaseServerName.IPLocale, databaseServerName.PortLocal); if (management == null) { return(false); } // et suppression de la base de données sur le serveur de BD management.RemoveDatabase(database.NomBD); } catch (Exception ex) { LogManager.GetLogger().Error(ex); throw new DatabaseException(string.Format("Erreur dans la suppression de la base de données {0} sur le serveur '{1}'", database.ToString(), serverName), ex); } // Suppression des contributeurs associés db.DatabaseGroupUsers.RemoveRange(database.DatabaseGroupUsers); try { db.SaveChanges(); } catch (DbUpdateConcurrencyException ex) { LogManager.GetLogger().Error(ex); throw new Exception(string.Format("Erreur dans la suppression des contributeurs de la base de données '{0}' dans le référentiel", database.ToString())); } // Suppression de la base de données db.DatabaseDBs.Remove(database); try { db.SaveChanges(); } catch (DbUpdateConcurrencyException ex) { LogManager.GetLogger().Error(ex); throw new Exception(string.Format("Erreur dans la suppression de la base de données '{0}' dans le référentiel", database.ToString())); } return(true); }