示例#1
0
        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);
        }
示例#2
0
        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);
        }