コード例 #1
0
        /// <summary>
        /// Get Dictionary<UniqueID, ControlID>
        /// </summary>
        /// <param name="currentControl"></param>
        /// <param name="db"></param>
        /// <param name="transaction"></param>
        /// <returns></returns>
        private Dictionary <int, OperandInstance> GetUniqueIDControlIDDictionary(ControlInstance currentControl, WebBuilderEFContext db, DbContextTransaction transaction)
        {
            Dictionary <int, OperandInstance> dictionary = new Dictionary <int, OperandInstance>();

            if (currentControl.Control.UniqueID > 0)
            {
                OperandInstance currentOperand = new OperandInstance()
                {
                    ObjectID  = currentControl.Control.ControlID,
                    UniqueID  = currentControl.Control.UniqueID,
                    OperandID = currentControl.Control.OperandID.GetValueOrDefault()
                };
                dictionary.Add(currentControl.Control.UniqueID, currentOperand);
            }
            if (currentControl.ChildControls != null)
            {
                foreach (ControlInstance childControl in currentControl.ChildControls)
                {
                    {
                        Dictionary <int, OperandInstance> subDictionary = GetUniqueIDControlIDDictionary(childControl, db, transaction);
                        subDictionary.ToList().ForEach(x => dictionary.Add(x.Key, x.Value));
                    }
                }
            }

            return(dictionary);
        }
コード例 #2
0
        /// <summary>
        /// Add new form - Save all the form meta descriptions
        /// </summary>
        /// <param name="formInstance">Form meta-descriptions to save</param>
        /// <returns></returns>
        public FormInstance AddFormMetaDescriptions(FormInstance formInstance)
        {
            // Dictionary<UniqueID, ControlID>
            Dictionary <int, OperandInstance> uniqueIDDictionary = new Dictionary <int, OperandInstance>();

            using (var db = this.CreateContext())
            {
                using (var transaction = db.Database.BeginTransaction())
                {
                    try
                    {
                        // Save Form
                        db.Forms.Add(formInstance.Form);
                        db.SaveChanges();

                        // Save Form Parameters
                        if (formInstance.FormParameters != null)
                        {
                            foreach (var formParameter in formInstance.FormParameters)
                            {
                                formParameter.FormParameter.FormID = formInstance.Form.FormID;

                                var operand = db.Operands.Add(new Operand());
                                db.SaveChanges();
                                formParameter.FormParameter.OperandID = operand.OperandID;

                                db.FormParameters.Add(formParameter.FormParameter);
                                db.SaveChanges();

                                OperandInstance currentOperand = new OperandInstance()
                                {
                                    ObjectID  = formParameter.FormParameter.FormParameterID,
                                    UniqueID  = formParameter.FormParameter.UniqueID,
                                    OperandID = formParameter.FormParameter.OperandID
                                };
                                uniqueIDDictionary.Add(formParameter.FormParameter.UniqueID, currentOperand);
                            }
                        }

                        // Recursive save all the controls of the form
                        formInstance.RootControl.Control.FormID = formInstance.Form.FormID;
                        this.SaveControl(formInstance.RootControl, db, transaction);

                        // Dictionary<UniqueID, ControlID>
                        Dictionary <int, OperandInstance> controlIDuniqueIDDictionary = GetUniqueIDControlIDDictionary(formInstance.RootControl, db, transaction);
                        controlIDuniqueIDDictionary.ToList().ForEach(x => uniqueIDDictionary.Add(x.Key, x.Value));

                        // Recursive save all events
                        this.SaveControlEvents(controlIDuniqueIDDictionary, formInstance.RootControl, db, transaction);

                        // Commit transaction
                        db.SaveChanges();
                        transaction.Commit();

                        return(formInstance);
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }