示例#1
0
        private void comboBoxIntermediatePrimaryRelationship_SelectedIndexChanged(object sender, EventArgs e)
        {
            OneToManyRelationship oneToManyRelationship = (OneToManyRelationship)comboBoxIntermediatePrimaryRelationship.SelectedItem;

            ManyToOneRelationship[] manyToOneRelationships = (ManyToOneRelationship[])oneToManyRelationship.ForeignScriptObject.ManyToOneRelationships;

            comboBoxIntermediateForeignRelationship.DataSource    = manyToOneRelationships;
            comboBoxIntermediateForeignRelationship.DisplayMember = "Alias";
            comboBoxIntermediateForeignRelationship.ValueMember   = "Name";
        }
示例#2
0
        protected Relationship GetParentChildrenRelationship(string relationship, string entity, string childEntity)
        {
            Relationship oRelationship = new Relationship(relationship, entity, childEntity, Schema);

            if (oRelationship.DirectRelationships.Length == 1)
            {
                return(new OneToManyRelationship(entity, childEntity, oRelationship.DirectRelationships));
            }

            if (oRelationship.DirectRelationships.Length == 2)
            {
                string intermediary = oRelationship.DirectRelationships[0].RelatedEntity;

                XElement xRelationship = Schema.Elements(SchemaVocab.Relationship).FirstOrDefault(r =>
                                                                                                  r.Attribute(SchemaVocab.Type).Value == SchemaVocab.ManyToMany &&
                                                                                                  r.Attribute(SchemaVocab.Name) != null && r.Attribute(SchemaVocab.Name).Value == relationship &&
                                                                                                  r.Elements(SchemaVocab.Relationship).Count() == 2);
                if (xRelationship == null)
                {
                    bool firstIsMatch = IsMatch(SchemaVocab.OneToMany, entity, intermediary, oRelationship.DirectRelationships[0].ToString());
                    if (!firstIsMatch)
                    {
                        firstIsMatch = IsMatch(SchemaVocab.ManyToOne, intermediary, entity, oRelationship.DirectRelationships[0].Reverse().ToString());
                    }
                    if (!firstIsMatch)
                    {
                        return(null);
                    }

                    //
                    bool secondIsMatch = IsMatch(SchemaVocab.ManyToOne, intermediary, childEntity, oRelationship.DirectRelationships[1].ToString());
                    if (!secondIsMatch)
                    {
                        secondIsMatch = IsMatch(SchemaVocab.OneToMany, entity, intermediary, oRelationship.DirectRelationships[1].Reverse().ToString());
                    }
                    if (!secondIsMatch)
                    {
                        return(null);
                    }
                }

                OneToManyRelationship oneToManyRelationship = new OneToManyRelationship(entity, intermediary,
                                                                                        new List <DirectRelationship> {
                    oRelationship.DirectRelationships[0]
                });
                ManyToOneRelationship manyToOneRelationship = new ManyToOneRelationship(intermediary, childEntity,
                                                                                        new List <DirectRelationship> {
                    oRelationship.DirectRelationships[1]
                });

                return(new ManyToManyRelationship(oneToManyRelationship, manyToOneRelationship));
            }

            return(null);
        }
示例#3
0
        public List <IRelationship> findOneToManyRelationships(object o)
        {
            List <IRelationship> listOfRelationships = new List <IRelationship>();
            Type type = o.GetType();

            PropertyInfo[] props = type.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance);
            foreach (PropertyInfo prp in props)
            {
                MethodInfo strGetter = prp.GetGetMethod(nonPublic: true);
                object[]   att       = prp.GetCustomAttributes(typeof(OneToManyAttribute), false);
                var        val       = strGetter.Invoke(o, null);
                if (att.Length != 0)
                {
                    object owner = o;
                    object owned = val;
                    OneToManyRelationship oneToManyRelationship = new OneToManyRelationship(owner, owned);
                    listOfRelationships.Add(oneToManyRelationship);
                }
            }
            return(listOfRelationships);
        }
示例#4
0
        private void FormRelationship_Load(object sender, EventArgs e)
        {
            foreach (ScriptObject scriptObject in _scriptObjects)
            {
                comboBoxPrimaryScriptObject.Items.Add(scriptObject);
            }
            comboBoxPrimaryScriptObject.DisplayMember = "Alias";
            comboBoxPrimaryScriptObject.ValueMember   = "Name";

            foreach (OneToManyRelationship oneToManyRelationship in _parent.OneToManyRelationships)
            {
                comboBoxIntermediatePrimaryRelationship.Items.Add(oneToManyRelationship);
            }
            comboBoxIntermediatePrimaryRelationship.DisplayMember = "Alias";
            comboBoxIntermediatePrimaryRelationship.ValueMember   = "Name";

            foreach (ScriptObject scriptObject in _scriptObjects)
            {
                comboBoxForeignScriptObject.Items.Add(scriptObject);
            }
            comboBoxForeignScriptObject.DisplayMember = "Alias";
            comboBoxForeignScriptObject.ValueMember   = "Name";

            groupBoxType.Enabled = false;
            string relationshipText = "";

            switch (TypeOfRelationship.Name)
            {
            case "ManyToOneRelationship":
                relationshipText = "Many-To-One Relationship";
                break;

            case "ManyToManyRelationship":
                relationshipText = "Many-To-Many Relationship";
                break;

            case "OneToOneRelationship":
                relationshipText = "One-To-One Relationship";
                break;

            case "OneToManyRelationship":
                relationshipText = "One-To-Many Relationship";
                break;

            default:
                throw new NotImplementedException("Unexpected relationship type: " + _primaryRelationship.GetType().Name);
            }
            if (_primaryRelationship == null)
            {
                this.Text = string.Format("New {0}", relationshipText);
                comboBoxPrimaryScriptObject.SelectedItem = _parent;

                checkBoxIsBase.Enabled = true;
            }
            else
            {
                this.Text               = string.Format("Edit {0} ({1})", _primaryRelationship.Name, relationshipText);
                textBoxName.Text        = _primaryRelationship.Name;
                textBoxAlias.Text       = _primaryRelationship.Alias;
                textBoxPath.Text        = _primaryRelationship.Path;
                textBoxDescription.Text = _primaryRelationship.Description;

                comboBoxPrimaryScriptObject.SelectedItem = _parent;
                foreach (Column column in _primaryRelationship.PrimaryColumns)
                {
                    ListViewItem item = new ListViewItem(column.Alias);
                    item.SubItems.Add(column.Name);
                    item.Tag = column;

                    listViewPrimaryColumn.Items.Add(item);
                }
                comboBoxForeignScriptObject.SelectedItem = _primaryRelationship.ForeignScriptObject;
                foreach (Column column in _primaryRelationship.ForeignColumns)
                {
                    ListViewItem item = new ListViewItem(column.Alias);
                    item.SubItems.Add(column.Name);
                    item.Tag = column;

                    listViewForeignColumn.Items.Add(item);
                }
                UpdatePrimaryFilters();
                UpdateForeignFilters();

                if (_primaryRelationship.GetType() == typeof(ManyToManyRelationship))
                {
                    ManyToManyRelationship manyToManyRelationship = (ManyToManyRelationship)_primaryRelationship;

                    comboBoxIntermediatePrimaryRelationship.SelectedItem = manyToManyRelationship.IntermediatePrimaryRelationship;
                    comboBoxIntermediateForeignRelationship.SelectedItem = manyToManyRelationship.IntermediateForeignRelationship;

                    tabStripRelationship.Pages.RemoveAt(0);
                    tabStripRelationship.Pages.RemoveAt(1);
                }
                else
                {
                    tabStripRelationship.Pages.RemoveAt(1);

                    comboBoxPrimaryFilter.SelectedItem = _primaryRelationship.Filter;
                    comboBoxForeignFilter.SelectedItem = _primaryRelationship.ForeignRelationship.Filter;
                }

                if (_primaryRelationship.GetType() == typeof(OneToOneRelationship))
                {
                    OneToOneRelationship relationship = (OneToOneRelationship)_primaryRelationship;

                    checkBoxIsBase.Checked      = relationship.IsBase;
                    checkBoxIsBase.Visible      = true;
                    radioButtonOneToOne.Checked = true;
                }
                else if (_primaryRelationship.GetType() == typeof(OneToManyRelationship))
                {
                    OneToManyRelationship relationship = (OneToManyRelationship)_primaryRelationship;

                    radioButtonOneToMany.Checked = true;
                }
                else if (_primaryRelationship.GetType() == typeof(ManyToOneRelationship))
                {
                    radioButtonManyToOne.Checked = true;
                }
                else if (_primaryRelationship.GetType() == typeof(ManyToManyRelationship))
                {
                    ManyToManyRelationship relationship = (ManyToManyRelationship)_primaryRelationship;

                    radioButtonManyToMany.Checked = true;
                }

                if (!_primaryRelationship.IsUserDefined)
                {
                    textBoxName.ReadOnly = true;

                    comboBoxPrimaryColumn.Enabled       = false;
                    comboBoxPrimaryScriptObject.Enabled = false;
                    buttonPrimaryColumnAdd.Enabled      = false;
                    listViewPrimaryColumn.Enabled       = false;
                    comboBoxPrimaryFilter.Enabled       = false;

                    comboBoxIntermediatePrimaryRelationship.Enabled = false;
                    comboBoxIntermediateForeignRelationship.Enabled = false;

                    comboBoxForeignColumn.Enabled       = false;
                    comboBoxForeignScriptObject.Enabled = false;
                    buttonForeignColumnAdd.Enabled      = false;
                    listViewForeignColumn.Enabled       = false;
                    comboBoxForeignFilter.Enabled       = false;

                    buttonAddPrimaryFilter.Enabled = false;
                    buttonAddIntermediatePrimaryRelationship.Enabled = false;
                    buttonAddIntermediateForeignRelationship.Enabled = false;
                    buttonAddForeignFilter.Enabled = false;
                }
            }

            listViewPrimaryColumn_Resize(null, null);
            listViewForeignColumn_Resize(null, null);

            //UpdatePrimaryFilters();
            //UpdateForeignFilters();
        }
示例#5
0
        private void buttonOk_Click(object sender, EventArgs e)
        {
            for (int i = this.Controls.Count - 1; i >= 0; i--)
            {
                Control control = this.Controls[i];
                control.Focus();

                // First tab
                tabStripRelationship.SelectedIndex = 0;
                if (!ValidateControl(control))
                {
                    DialogResult = DialogResult.None;
                    return;
                }

                // Second tab
                if (radioButtonOneToOne.Checked ||
                    radioButtonOneToMany.Checked ||
                    radioButtonManyToOne.Checked)
                {
                    tabStripRelationship.SelectedIndex = 1;
                    if (!ValidateControl(control))
                    {
                        DialogResult = DialogResult.None;
                        return;
                    }
                }
            }

            Column[] primaryColumns = new Column[listViewPrimaryColumn.Items.Count];
            for (int i = 0; i < listViewPrimaryColumn.Items.Count; i++)
            {
                ListViewItem listViewItem = listViewPrimaryColumn.Items[i];
                primaryColumns[i] = (Column)listViewItem.Tag;
            }

            Column[] foreignColumns = new Column[listViewForeignColumn.Items.Count];
            for (int i = 0; i < listViewForeignColumn.Items.Count; i++)
            {
                ListViewItem listViewItem = listViewForeignColumn.Items[i];
                foreignColumns[i] = (Column)listViewItem.Tag;
            }

            if (_primaryRelationship == null)
            {
                ScriptObject primaryScriptObject = (ScriptObject)comboBoxPrimaryScriptObject.SelectedItem;
                ScriptObject foreignScriptObject = (ScriptObject)comboBoxForeignScriptObject.SelectedItem;

                Filter primaryFilter = (Filter)comboBoxPrimaryFilter.SelectedItem;
                Filter foreignFilter = (Filter)comboBoxForeignFilter.SelectedItem;

                if (radioButtonOneToOne.Checked)
                {
                    _primaryRelationship             = new OneToOneRelationship(textBoxName.Text, true, _parent, primaryColumns, foreignScriptObject, foreignColumns, primaryFilter, checkBoxIsBase.Checked);
                    _primaryRelationship.Alias       = textBoxAlias.Text;
                    _primaryRelationship.Description = textBoxDescription.Text;
                    _foreignRelationship             = new OneToOneRelationship(primaryScriptObject.Alias, true, foreignScriptObject, foreignColumns, _parent, primaryColumns, foreignFilter, !checkBoxIsBase.Checked);
                    _foreignRelationship.Alias       = primaryScriptObject.Alias;
                }

                if (radioButtonOneToMany.Checked)
                {
                    _primaryRelationship             = new OneToManyRelationship(textBoxName.Text, true, _parent, primaryColumns, foreignScriptObject, foreignColumns, primaryFilter);
                    _primaryRelationship.Alias       = textBoxAlias.Text;
                    _primaryRelationship.Description = textBoxDescription.Text;
                    _foreignRelationship             = new ManyToOneRelationship(primaryScriptObject.Alias, true, foreignScriptObject, foreignColumns, _parent, primaryColumns, foreignFilter);
                    _foreignRelationship.Alias       = primaryScriptObject.Alias;
                }

                if (radioButtonManyToOne.Checked)
                {
                    _primaryRelationship             = new ManyToOneRelationship(textBoxName.Text, true, _parent, primaryColumns, foreignScriptObject, foreignColumns, primaryFilter);
                    _primaryRelationship.Alias       = textBoxAlias.Text;
                    _primaryRelationship.Description = textBoxDescription.Text;
                    _foreignRelationship             = new OneToManyRelationship(primaryScriptObject.AliasPlural, true, foreignScriptObject, foreignColumns, _parent, primaryColumns, foreignFilter);
                    _foreignRelationship.Alias       = primaryScriptObject.AliasPlural;
                }

                if (radioButtonManyToMany.Checked)
                {
                    OneToManyRelationship oneToManyRelationship = (OneToManyRelationship)comboBoxIntermediatePrimaryRelationship.SelectedItem;
                    ManyToOneRelationship manyToOneRelationship = (ManyToOneRelationship)comboBoxIntermediateForeignRelationship.SelectedItem;
                    _primaryRelationship             = new ManyToManyRelationship(textBoxName.Text, true, oneToManyRelationship, manyToOneRelationship, oneToManyRelationship.Filter);
                    _primaryRelationship.Alias       = textBoxAlias.Text;
                    _primaryRelationship.Description = textBoxDescription.Text;
                    _foreignRelationship             = new ManyToManyRelationship(oneToManyRelationship.Parent.AliasPlural, true, (OneToManyRelationship)manyToOneRelationship.ForeignRelationship, (ManyToOneRelationship)oneToManyRelationship.ForeignRelationship, manyToOneRelationship.ForeignRelationship.Filter);
                    _foreignRelationship.Alias       = oneToManyRelationship.Parent.AliasPlural;
                }
                _primaryRelationship.ForeignRelationship = _foreignRelationship;
                _foreignRelationship.ForeignRelationship = _primaryRelationship;
            }
            else
            {
                _primaryRelationship.Name                = textBoxName.Text;
                _primaryRelationship.Alias               = textBoxAlias.Text;
                _primaryRelationship.Description         = textBoxDescription.Text;
                _primaryRelationship.PrimaryColumns      = primaryColumns;
                _primaryRelationship.ForeignScriptObject = (ScriptObject)comboBoxForeignScriptObject.SelectedItem;
                _primaryRelationship.ForeignColumns      = foreignColumns;
                _primaryRelationship.Filter              = (Filter)comboBoxPrimaryFilter.SelectedItem;

                _primaryRelationship.ForeignRelationship.Filter = (Filter)comboBoxForeignFilter.SelectedItem;

                if (_primaryRelationship.GetType() == typeof(ManyToManyRelationship))
                {
                    ManyToManyRelationship manyToManyRelationship = (ManyToManyRelationship)_primaryRelationship;
                    manyToManyRelationship.IntermediatePrimaryRelationship = (OneToManyRelationship)comboBoxIntermediatePrimaryRelationship.SelectedItem;
                    manyToManyRelationship.IntermediateForeignRelationship = (ManyToOneRelationship)comboBoxIntermediateForeignRelationship.SelectedItem;
                }
            }
        }
示例#6
0
        private void InitialUpdateRelationships(IList <Model.Table> tables)
        {
            foreach (Model.Table table in tables)
            {
                foreach (Key key in table.Keys)
                {
                    // Look for one to one relationship
                    if (key.Type != DatabaseConstant.KeyType.Foreign)
                    {
                        continue;
                    }
                    if (IsOneToOneRelationship(key))
                    {
                        Filter filter = Search.GetFilter(table.Filters, new Helper(DalAssemblyName).GetPrimaryKey((Model.Table)key.Parent).Name);
                        OneToOneRelationship oneToOneRelationship = new OneToOneRelationship("One_" + key.Name, false, table, key.Columns, key.ReferencedTable, key.ReferencedKey.Columns, filter, false);
                        table.AddRelationship(oneToOneRelationship);

                        // Back other way
                        Filter filter2 = Search.GetFilter(key.ReferencedKey.Parent.Filters, new Helper(DalAssemblyName).GetPrimaryKey((Model.Table)key.ReferencedKey.Parent).Name);
                        OneToOneRelationship oneToOneRelationship2 = new OneToOneRelationship("One_" + key.Name, false, key.ReferencedTable, key.ReferencedKey.Columns, table, key.Columns, filter2, true);
                        key.ReferencedTable.AddRelationship(oneToOneRelationship2);

                        oneToOneRelationship.ForeignRelationship  = oneToOneRelationship2;
                        oneToOneRelationship2.ForeignRelationship = oneToOneRelationship;
                    }
                    else
                    {
                        Filter filter = Search.GetFilter(table.Filters, key.Name);
                        ManyToOneRelationship manyToOneRelationship = new ManyToOneRelationship("One_" + key.Name, false, table, key.Columns, key.ReferencedTable, key.ReferencedKey.Columns, filter);
                        table.AddRelationship(manyToOneRelationship);

                        // Back other way
                        Filter filter2 = Search.GetFilter(key.ReferencedTable.Filters, key.ReferencedKey.Name);
                        OneToManyRelationship oneToManyRelationship = new OneToManyRelationship("Many_" + key.Name, false, key.ReferencedTable, key.ReferencedKey.Columns, table, key.Columns, filter2);
                        key.ReferencedTable.AddRelationship(oneToManyRelationship);

                        manyToOneRelationship.ForeignRelationship = oneToManyRelationship;
                        oneToManyRelationship.ForeignRelationship = manyToOneRelationship;
                    }
                }
            }
            // Temp list to search for foreign relationship
            List <Relationship> manyToManyRelationships = new List <Relationship>();

            foreach (Model.Table table in tables)
            {
                foreach (ManyToOneRelationship manyToOneRelationship in table.ManyToOneRelationships)
                {
                    string path = manyToOneRelationship.ForeignScriptObject.Name + " -> " + GetColumnNameList(manyToOneRelationship.ForeignColumns) + " -> " + manyToOneRelationship.PrimaryScriptObject.Name + " -> " + GetColumnNameList(manyToOneRelationship.PrimaryColumns);

                    foreach (ManyToOneRelationship manyToOneRelationship2 in table.ManyToOneRelationships)
                    {
                        if (manyToOneRelationship2.Name == manyToOneRelationship.Name)
                        {
                            continue;
                        }
                        path += " -> " + manyToOneRelationship2.PrimaryScriptObject.Name + " -> " + GetColumnNameList(manyToOneRelationship2.PrimaryColumns) + " -> " + manyToOneRelationship2.ForeignScriptObject.Name + " -> " + GetColumnNameList(manyToOneRelationship2.ForeignColumns);
                        ManyToManyRelationship manyToManyRelationship = new ManyToManyRelationship("Many_" + manyToOneRelationship.Name + "_" + manyToOneRelationship2.Name,
                                                                                                   false, (OneToManyRelationship)manyToOneRelationship.ForeignRelationship, manyToOneRelationship2, manyToOneRelationship2.ForeignRelationship.Filter);

                        manyToOneRelationship.ForeignScriptObject.AddRelationship(manyToManyRelationship);
                        manyToManyRelationships.Add(manyToManyRelationship);
                    }
                }
            }
            #region Fill foreign relationships
            foreach (Model.Table table in tables)
            {
                foreach (ManyToManyRelationship manyToManyRelationship in table.ManyToManyRelationships)
                {
                    string foreignRelationshipName = "Many_" + manyToManyRelationship.IntermediatePrimaryRelationship.ForeignRelationship.Name + "_" + manyToManyRelationship.IntermediateForeignRelationship.Name;

                    ManyToManyRelationship foreignRelationship = (ManyToManyRelationship)Search.GetRelationship(manyToManyRelationships.ToArray(), foreignRelationshipName);
                    manyToManyRelationship.ForeignRelationship = foreignRelationship;
                }
            }
            #endregion
        }
示例#7
0
        private void FormRelationship_Load(object sender, EventArgs e)
        {
            foreach (ScriptObject scriptObject in _scriptObjects)
            {
                comboBoxPrimaryScriptObject.Items.Add(scriptObject);
            }
            comboBoxPrimaryScriptObject.DisplayMember = "Alias";
            comboBoxPrimaryScriptObject.ValueMember   = "Name";

            foreach (OneToManyRelationship oneToManyRelationship in _parent.OneToManyRelationships)
            {
                comboBoxIntermediatePrimaryRelationship.Items.Add(oneToManyRelationship);
            }
            comboBoxIntermediatePrimaryRelationship.DisplayMember = "Alias";
            comboBoxIntermediatePrimaryRelationship.ValueMember   = "Name";

            foreach (ScriptObject scriptObject in _scriptObjects)
            {
                comboBoxForeignScriptObject.Items.Add(scriptObject);
            }
            comboBoxForeignScriptObject.DisplayMember = "Alias";
            comboBoxForeignScriptObject.ValueMember   = "Name";

            groupBoxType.Enabled = false;

            if (_primaryRelationship == null)
            {
                this.Text = "Add New Relationship";
                comboBoxPrimaryScriptObject.SelectedItem = _parent;

                checkBoxIsBase.Enabled = true;
            }
            else
            {
                this.Text = "Edit Relationship " + _primaryRelationship.Name;

                textBoxName.Text  = _primaryRelationship.Name;
                textBoxAlias.Text = _primaryRelationship.Alias;
                textBoxPath.Text  = _primaryRelationship.Path;

                comboBoxPrimaryScriptObject.SelectedItem = _parent;
                foreach (Column column in _primaryRelationship.PrimaryColumns)
                {
                    ListViewItem item = new ListViewItem(column.Alias);
                    item.SubItems.Add(column.Alias);
                    item.Tag = column;

                    listViewPrimaryColumn.Items.Add(item);
                }

                comboBoxForeignScriptObject.SelectedItem = _primaryRelationship.ForeignScriptObject;
                foreach (Column column in _primaryRelationship.ForeignColumns)
                {
                    ListViewItem item = new ListViewItem(column.Alias);
                    item.SubItems.Add(column.Alias);
                    item.Tag = column;

                    listViewForeignColumn.Items.Add(item);
                }

                if (_primaryRelationship.GetType() == typeof(ManyToManyRelationship))
                {
                    ManyToManyRelationship manyToManyRelationship = (ManyToManyRelationship)_primaryRelationship;

                    comboBoxIntermediatePrimaryRelationship.SelectedItem = manyToManyRelationship.IntermediatePrimaryRelationship;
                    comboBoxIntermediateForeignRelationship.SelectedItem = manyToManyRelationship.IntermediateForeignRelationship;

                    tabStripRelationship.Pages.RemoveAt(0);
                    tabStripRelationship.Pages.RemoveAt(1);
                }
                else
                {
                    tabStripRelationship.Pages.RemoveAt(1);

                    comboBoxPrimaryFilter.SelectedItem = _primaryRelationship.Filter;
                    comboBoxForeignFilter.SelectedItem = _primaryRelationship.ForeignRelationship.Filter;
                }

                if (_primaryRelationship.GetType() == typeof(OneToOneRelationship))
                {
                    OneToOneRelationship relationship = (OneToOneRelationship)_primaryRelationship;

                    checkBoxIsBase.Checked      = relationship.IsBase;
                    checkBoxIsBase.Visible      = true;
                    radioButtonOneToOne.Checked = true;
                }
                else if (_primaryRelationship.GetType() == typeof(OneToManyRelationship))
                {
                    OneToManyRelationship relationship = (OneToManyRelationship)_primaryRelationship;

                    radioButtonOneToMany.Checked = true;
                }
                else if (_primaryRelationship.GetType() == typeof(ManyToOneRelationship))
                {
                    radioButtonManyToOne.Checked = true;
                }
                else if (_primaryRelationship.GetType() == typeof(ManyToManyRelationship))
                {
                    ManyToManyRelationship relationship = (ManyToManyRelationship)_primaryRelationship;

                    radioButtonManyToMany.Checked = true;
                }

                if (!_primaryRelationship.IsUserDefined)
                {
                    textBoxName.ReadOnly = true;

                    comboBoxPrimaryColumn.Enabled       = false;
                    comboBoxPrimaryScriptObject.Enabled = false;
                    buttonPrimaryColumnAdd.Enabled      = false;
                    listViewPrimaryColumn.Enabled       = false;
                    comboBoxPrimaryFilter.Enabled       = false;

                    comboBoxIntermediatePrimaryRelationship.Enabled = false;
                    comboBoxIntermediateForeignRelationship.Enabled = false;

                    comboBoxForeignColumn.Enabled       = false;
                    comboBoxForeignScriptObject.Enabled = false;
                    buttonForeignColumnAdd.Enabled      = false;
                    listViewForeignColumn.Enabled       = false;
                    comboBoxForeignFilter.Enabled       = false;

                    buttonAddPrimaryFilter.Enabled = false;
                    buttonAddIntermediatePrimaryRelationship.Enabled = false;
                    buttonAddIntermediateForeignRelationship.Enabled = false;
                    buttonAddForeignFilter.Enabled = false;
                }
            }

            listViewPrimaryColumn_Resize(null, null);
            listViewForeignColumn_Resize(null, null);
        }