Example #1
0
        /// <summary>
        /// 保存方案表结构关系
        /// </summary>
        /// <param name="sqlSchemaId"></param>
        /// <param name="tableRelationEntity"></param>
        public static void saveTableRelation(String sqlSchemaId,
                                             TableRelationEntity tableRelationEntity, DataGridView dgv, String selectValue)
        {
            XmlDocument doc = new XmlDocument();

            doc.Load(MsqlConfigXmlPath);
            XmlNode nodeSchema =
                doc.SelectSingleNode("//SqlSchema[@ID='" + sqlSchemaId + "']");

            XmlNode nodeTableRelation
                = nodeSchema.SelectSingleNode("TableRelation");

            if (nodeTableRelation == null)
            {
                nodeTableRelation = doc.CreateElement("TableRelation");
                nodeSchema.AppendChild(nodeTableRelation);
            }

            //删除所有节点重新建立关系
            XmlNode nodeTableRelationDetail
                = nodeTableRelation.SelectSingleNode("DetialRelation[@ID='" + tableRelationEntity.Id + "']");

            if (nodeTableRelationDetail != null)
            {
                nodeTableRelationDetail.ParentNode.RemoveChild(nodeTableRelationDetail);
            }

            nodeTableRelationDetail = doc.CreateElement("DetialRelation");
            nodeTableRelation.AppendChild(nodeTableRelationDetail);

            XmlElement elementTableRelationDetail = nodeTableRelationDetail as XmlElement;

            elementTableRelationDetail.SetAttribute("ID", tableRelationEntity.Id);
            elementTableRelationDetail.SetAttribute("FTableSpaceName", tableRelationEntity.FTableSpaceName);
            elementTableRelationDetail.SetAttribute("FTableName", tableRelationEntity.FTableName);
            elementTableRelationDetail.SetAttribute("FColumnName", tableRelationEntity.FColumnName);
            elementTableRelationDetail.SetAttribute("LTableSpaceName", tableRelationEntity.LTableSpaceName);
            elementTableRelationDetail.SetAttribute("LTableName", tableRelationEntity.LTableName);
            elementTableRelationDetail.SetAttribute("LColumnName", tableRelationEntity.LColumnName);
            XmlCDataSection cData
                = doc.CreateCDataSection(string.Format("{0}.{1}.{2}={3}.{4}.{5}",
                                                       tableRelationEntity.FTableSpaceName,
                                                       tableRelationEntity.FTableName,
                                                       tableRelationEntity.FColumnName,
                                                       tableRelationEntity.LTableSpaceName,
                                                       tableRelationEntity.LTableName,
                                                       tableRelationEntity.LColumnName));

            elementTableRelationDetail.AppendChild(cData);

            doc.Save(MsqlConfigXmlPath);

            LoadSchemaTableRelation(sqlSchemaId, doc, dgv, selectValue);
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            try
            {
                if (cmbFColumnName.Text == "")
                {
                    MessageBox.Show(@"请选择关联前字段信息", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                if (cmbLColumnName.Text == "")
                {
                    MessageBox.Show(@"请选择关联后字段信息", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                TableRelationEntity tableRelationEntity
                    = new TableRelationEntity();
                if (lblGUID.Text == "")
                {
                    lblGUID.Text = Guid.NewGuid().ToString();
                }

                tableRelationEntity.Id = lblGUID.Text;
                tableRelationEntity.FTableSpaceName = cmbFTableSpaceName.SelectedValue.ToString();
                tableRelationEntity.FTableName      = cmbFTableName.SelectedValue.ToString();
                tableRelationEntity.FColumnName     = cmbFColumnName.SelectedValue.ToString();
                tableRelationEntity.LTableSpaceName = cmbLTableSpaceName.SelectedValue.ToString();
                tableRelationEntity.LTableName      = cmbLTableName.SelectedValue.ToString();
                tableRelationEntity.LColumnName     = cmbLColumnName.SelectedValue.ToString();

                if (tableRelationEntity.FTableSpaceName.Equals(tableRelationEntity.LTableSpaceName) &&
                    tableRelationEntity.FTableName.Equals(tableRelationEntity.LTableName) &&
                    tableRelationEntity.FColumnName.Equals(tableRelationEntity.LColumnName))
                {
                    MessageBox.Show("不同关联相同的字段!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                else if (tableRelationEntity.FTableSpaceName.Equals(tableRelationEntity.LTableSpaceName) &&
                         tableRelationEntity.FTableName.Equals(tableRelationEntity.LTableName))
                {
                    MessageBox.Show("不能关联同一张表的字段!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }

                SqlConfig.saveTableRelation(sqlSchemaId, tableRelationEntity, dgvTableRealtion, lblGUID.Text);
            }
            catch (Exception er)
            {
                MessageBox.Show(er.Message, "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }