private void InitInfrastructureServices() { try { // Cargar todos los modelos de datos y verificar ensamblados DataModelDataAccess dataModelDataAccess = new DataModelDataAccess(); Collection <DataModelEntity> result = dataModelDataAccess.LoadWhere(DataModelEntity.DBIdStore, "0", false, OperatorType.Equal); dataModelDataAccess = new DataModelDataAccess(); Collection <DataModelEntity> dataModels = dataModelDataAccess.LoadAll(true); if (result.Count == 0) { ConsoleWriter.SetText("Creating mall data model"); DataModelEntity dataModel = new DataModelEntity(); MallEntity mall = new MallEntity(); mall.MallName = "Mall"; (new MallDataAccess()).Save(mall); dataModel.Mall = mall; dataModelDataAccess.Save(dataModel); } foreach (DataModelEntity dataModel in dataModels) { string assemblyFileName = dataModel.ServiceAssemblyFileName; if (assemblyFileName != null) { if (File.Exists(Path.Combine(ServiceBuilder.AssembliesFolder, assemblyFileName))) { Type[] servicesTypes = ServiceBuilder.GetInfrastructureServiceTypes(assemblyFileName); Binding serviceBinding = new BasicHttpBinding(); if (PublishInfrastructureService(servicesTypes[0], servicesTypes[1], serviceBinding)) { Debug.WriteLine("SUCCESS : infrastructure service published."); } else { Debug.WriteLine("FAILURE : trying to publish infrastructure service."); } } else { ServiceBuilder builder = new ServiceBuilder(); dataModel.Deployed = false; builder.BuildAndImplementInfrastructureService(dataModel, false, serverSession); } } } } catch (DataException dataError) { Debug.WriteLine("ERROR : Data exception running infrastructure services. MESSAGE : " + dataError.Message); } catch (IOException ioError) { Debug.WriteLine("ERROR : IO error running infrastructure services. MESSAGE : " + ioError.Message); } }
/// <summary> /// Limpiar la carpeta de ensamblados cuando el servidor de configuración cambie /// a otra base de datos /// </summary> private static void CheckForClean() { try { ExeConfigurationFileMap configFile = new ExeConfigurationFileMap(); configFile.ExeConfigFilename = "wpfcore.config"; Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile, ConfigurationUserLevel.None); if (config.AppSettings.Settings[ServerHost.CleanAssemblyFolderKey] != null) { // Borrar todos los archivos en la carpeta de ensamblados dinámicos string[] filesToDelete = Directory.GetFiles(Path.GetFullPath(ServiceBuilder.AssembliesFolder), "*.*", SearchOption.TopDirectoryOnly); foreach (string fileToDelete in filesToDelete) { if (Path.GetFileName(fileToDelete).StartsWith("CustomService", StringComparison.Ordinal) || Path.GetFileName(fileToDelete).StartsWith("Store", StringComparison.Ordinal)) { try { Debug.WriteLine("Deleting file: {0}", fileToDelete); File.Delete(fileToDelete); } catch (UnauthorizedAccessException unauthorizedError) { Debug.WriteLine("Error cleaning assemblies: {0}", unauthorizedError.Message); } catch (IOException ioError) { Debug.WriteLine("Error cleaning assemblies: {0}", ioError.Message); } } } config.AppSettings.Settings.Remove(CleanAssemblyFolderKey); config.Save(); // Verificar si la base de datos actual tiene servicios que compilar DataModelDataAccess dataModelDataAccess = new DataModelDataAccess(); Collection <DataModelEntity> dataModels = dataModelDataAccess.LoadWhere(DataModelEntity.DBDeployed, true, false, OperatorType.Equal); if (dataModels.Count > 0) { System.Windows.MessageBox.Show(Resources.RecompilationOfServices, UtnEmall.Server.WpfCore.Resources.InformationTitle, System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Information); } } } catch (UtnEmallDataAccessException dbError) { Debug.WriteLine("Error cleaning assemblies: {0}", dbError.Message); } catch (UnauthorizedAccessException unauthorizedError) { Debug.WriteLine("Error cleaning assemblies: {0}", unauthorizedError.Message); } catch (DirectoryNotFoundException directoryNotFoundError) { Debug.WriteLine("Error cleaning assemblies: {0}", directoryNotFoundError.Message); } catch (IOException ioError) { Debug.WriteLine("Error cleaning assemblies: {0}", ioError.Message); } }
/// <summary> /// Actualiza la entidad DataModelEntity en la base de datos /// </summary> /// <param name="serviceDataModel">Modelo de datos a guardar.</param> /// <param name="sessionIdentifier">Identificador de sesión.</param> /// <returns>true si tiene éxito.</returns> static private bool SaveDataModel(DataModelEntity serviceDataModel, string sessionIdentifier) { DataModelDataAccess dataModelLogic = new DataModelDataAccess(); serviceDataModel.ServiceAssemblyFileName = Path.GetFileName(serviceDataModel.ServiceAssemblyFileName); serviceDataModel.Deployed = true; try { dataModelLogic.Save(serviceDataModel); return(true); } catch (UtnEmallDataAccessException error) { Debug.WriteLine("FAILURE : While updating data model entity. ERROR : " + error.Message); return(false); } }
public DataModel() { datamodelDataAccess = new DataModelDataAccess(); }