private DBMetaActionCollection GetDbMetaActions(EntitySchema entitySchema) { DBMetaActionManager dbMetaActionManager = (DBMetaActionManager) UserConnection.UserManagerProvider.GetManager("DBMetaActionManager"); Guid entitySchemaUId = entitySchema.UId; var actions = dbMetaActionManager.GetEntitySchemaActions(entitySchemaUId) ?? new DBMetaActionCollection(UserConnection); actions.Clear(); DBMetaScript dbMetaScript = UserConnection.DBMetaScript; dbMetaScript.ValidationMessages.Clear(); dbMetaScript.CheckObject(entitySchema); DBMetaScriptValidationMessageCollection validationMessages = dbMetaScript.ValidationMessages; dbMetaScript.AddEntitySchemaSavingActions(actions, entitySchema); if (actions.Count == 0) { return(actions); } actions.Sort(); dbMetaActionManager.Clear(); foreach (DBMetaAction action in actions) { dbMetaActionManager.Add(action, entitySchemaUId); } return(actions); }
private ResponceApplyChanges ApplyDbChanges(ResponceApplyChanges response, EntitySchema entitySchema, bool isBild = false) { try { DBMetaScript dbMetaScript = UserConnection.DBMetaScript; DBMetaActionCollection actions = GetDbMetaActions(entitySchema); dbMetaScript.CheckActions(actions); DBMetaScriptValidationMessageCollection validationMessages = dbMetaScript.ValidationMessages; if (validationMessages.HasErrors()) { response.Code = "Error.DbMetaActions.Get"; response.success = false; return(response); } dbMetaScript.ExecuteActions(actions); if (validationMessages.HasErrors()) { response.Code = "Error.DbMetaActions.Execute"; response.success = false; return(response); } } catch (Exception e) { response.success = false; response.Code = "Error.DbMetaActions.Apply"; response.Message = e.Message; return(response); } if (response.success && isBild) { try { #if !NETSTANDARD2_0 // TODO CRM-46783 var workspaceBuilder = WorkspaceBuilderUtility.CreateWorkspaceBuilder(AppConnection); CompilerErrorCollection compilerErrors = workspaceBuilder.Build(AppConnection.Workspace); if (compilerErrors.HasErrors) { response.success = false; response.Code = "Error.DbMetaActions.BuildError"; return(response); } #endif } catch (Exception) { response.success = false; response.Code = "Error.DbMetaActions.Build"; return(response); } } return(response); }