Ejemplo n.º 1
0
        private void RemoveQuestion_Click(object sender, EventArgs e)
        {
            if (quest.Conditions.Count != 0)
            {
                for (int i = quest.Conditions.Count - 1; i >= 0; i--)
                {
                    quest.Conditions.ElementAt(i).Attribute.Conditions.Remove(quest.Conditions.ElementAt(i));
                    int condId = quest.Conditions.ElementAt(i).Id;
                    quest.Conditions.ElementAt(i).Question.Conditions.Remove(quest.Conditions.ElementAt(i));
                    cont.ConditionSet.Remove(cont.ConditionSet.Find(condId));
                }
            }
            if (quest.Attributes.Count != 0)
            {
                for (int i = quest.Attributes.Count - 1; i >= 0; i--)
                {
                    Attribute atr = quest.Attributes.ElementAt(i);
                    atr.Questions.Remove(quest);
                    quest.Attributes.Remove(atr);
                }
            }
            cont.QuestionSet.Remove(quest);
            cont.SaveChanges();
            Hide();
            FrMain fM = new FrMain();

            fM.currentDBS = currentDB;
            fM.ShowDialog();
            Close();
            //cond.Question.Conditions.
        }
Ejemplo n.º 2
0
        private void BackButton_Click(object sender, EventArgs e)
        {
            Hide();
            FrMain CancelBut = new FrMain();

            CancelBut.currentDBS = currentDB;
            CancelBut.ShowDialog();
            Close();
        }
Ejemplo n.º 3
0
        private void CancelButton_Click(object sender, EventArgs e)
        {   //переход на главную форму
            Hide();
            FrMain main = new FrMain();

            main.currentDBS = dBP.Id;
            main.ShowDialog();
            Close();
        }
Ejemplo n.º 4
0
        //Возврат на главную рабочую страницу
        private void CancelButton_Click(object sender, EventArgs e)
        {
            Hide();
            FrMain CancelButton = new FrMain();

            CancelButton.currentDBS = DBP.Id;
            CancelButton.ShowDialog();
            Close();
        }
Ejemplo n.º 5
0
        private void CancelBut_Click(object sender, EventArgs e)
        {
            Hide();
            FrMain CancelBut = new FrMain();

            CancelBut.currentDBS = ent.DataBaseProject.Id;
            CancelBut.ShowDialog();
            Close();
        }
Ejemplo n.º 6
0
        //возвращение на главную форму
        private void BackButton_Click(object sender, EventArgs e)
        {
            Hide();
            FrMain main = new FrMain();

            main.currentDBS = curProjId;
            main.ShowDialog();
            Close();
        }
Ejemplo n.º 7
0
        private void CancelButton_Click(object sender, EventArgs e)
        {
            //возвращение на главную форму
            Hide();
            FrMain CancelButton = new FrMain();

            CancelButton.currentDBS = DBP.Id;
            CancelButton.ShowDialog();
            Close();
        }
Ejemplo n.º 8
0
 private void SaveButton_Click(object sender, EventArgs e) //кнопка сохранения атрибутов сущности
 {                                                         //атрибутов нет
     if (dataGridViewATT.Rows.Count == 0)
     {
         MessageBox.Show("Задайте атрибуты сущности!", "Ошибка!");
     }
     else
     {   //проверка на наличие первичных ключей
         int kolvo = 0;
         for (int i = 0; i < dataGridViewATT.RowCount; i++)
         {
             if ((string)dataGridViewATT.Rows[i].Cells[3].Value == "Первичный ключ")
             {
                 kolvo++;
             }
         }
         //проверка, если первичных ключей нет или их более 1
         if (kolvo == 0 || kolvo > 1)
         {
             MessageBox.Show("Для данной сущности первичный ключ задан некорректно - не задан вообще или несколько атрибутов имеют спецификатор 'Первичный ключ'. Пожалуйста, задайте данное значение для какого-либо одного атрибута сущности.", "Ошибка!");
             TypeAttribute.Text = "";
         }
         else
         {
             //обход строк таблиц
             for (int i = 0; i < dataGridViewATT.RowCount; i++)
             {   //создание арибутов
                 Attribute at = new Attribute
                 {
                     Name          = dataGridViewATT.Rows[i].Cells[0].Value.ToString(),
                     Description   = dataGridViewATT.Rows[i].Cells[1].Value.ToString(),
                     Type          = dataGridViewATT.Rows[i].Cells[2].Value.ToString(),
                     Specification = dataGridViewATT.Rows[i].Cells[3].Value.ToString(),
                 };
                 //
                 foreach (Entity en in DBP.Entities) //добавление атрибутов в текущую сущность
                 {
                     if (en.Name == comboBox1.Items[comboBox1.SelectedIndex].ToString())
                     {
                         en.Attributes.Add(at);
                         break;
                     }
                 }
                 //cont.EntitySet.Find(((Entity)comboBox1.SelectedValue).Id).Attributes.Add(at);
                 cont.SaveChanges();
             }
             //переход на главную форму
             Hide();
             FrMain SaveButton = new FrMain();
             SaveButton.currentDBS = DBP.Id;
             SaveButton.ShowDialog();
             Close();
         }
     }
 }
Ejemplo n.º 9
0
        //не полное решение, не работает, если у сущности есть формы или запросы
        private void butDeleteEntity_Click(object sender, EventArgs e)
        {
            //Поиск сущности

            foreach (Entity en in cont.EntitySet)
            {
                if (en.Name == NameEntityCB.Text)
                {
                    ent = en;
                }
            }
            DataBaseProject dbs = ent.DataBaseProject;

            //Удаление значений атрибутов сущности
            foreach (Forma f in ent.Forms)
            {
                foreach (ControlElement ce in f.ControlElements)
                {
                }
            }
            foreach (AttributeValue atv in cont.AttributeValueSet)
            {
                if (atv.Attribute.Entity == ent)
                {
                    cont.AttributeValueSet.Remove(atv);
                }
            }
            //Удаление связей сущности
            foreach (Relation rel in cont.RelationSet)
            {
                if (rel.Source.Entity == ent || rel.Target.Entity == ent)
                {
                    cont.RelationSet.Remove(rel);
                }
            }
            //Удаление атрибутов сущности
            foreach (Attribute at in cont.AttributeSet)
            {
                if (at.Entity == ent)
                {
                    cont.AttributeSet.Remove(at);
                }
            }
            //Удаление сущности
            cont.EntitySet.Remove(ent);
            cont.SaveChanges();
            Hide();
            FrMain butDeleteEntity = new FrMain();

            butDeleteEntity.currentDBS = dbs.Id;
            butDeleteEntity.ShowDialog();
            Close();
        }
Ejemplo n.º 10
0
 private void OpenProject_Click(object sender, EventArgs e)
 {                                      //открытие данных, связанных с проектом
     if (ProjectsList.Items.Count != 0) //проверяем количество существующих в бд проектов
     {
         DataBaseProject dBS = new DataBaseProject();
         foreach (DataBaseProject dbs in cont.DataBaseProjectSet)    //обход проектов в бд
         {
             if (dbs == ProjectsList.Items[ProjectsList.SelectedIndex])
             {
                 dBS = dbs;  //запоминается выбранный проект
             }
         }
         Hide();
         FrMain fM = new FrMain();
         fM.currentDBS = dBS.Id; //передаем ид текущего проекта
         fM.ShowDialog();        //переход на главную форму
         Close();
     }
     else
     {
         MessageBox.Show("Нет ни одного проекта в БД");
     }
 }
Ejemplo n.º 11
0
        private void CreateForma_Click(object sender, EventArgs e)
        {
            //создание формы
            if (dGVAttributes.Rows.Count != 0)
            {
                if (FormNameTB.Text != "")
                {
                    bool inDb = false;
                    foreach (Entity en in dBP.Entities)
                    {
                        foreach (Forma f in en.Forms)
                        {
                            if (f.Name == FormNameTB.Text)
                            {
                                inDb = true;    //есть форма с таким названием
                            }
                        }
                    }
                    if (!inDb)
                    {
                        //формы с таким названием нет
                        Forma newForm = new Forma();    //создание новой формы
                        newForm.Name        = FormNameTB.Text;
                        newForm.Description = DescriptionFormTB.Text;
                        selectedEvent.Forms.Add(newForm);
                        selectedEntity.Forms.Add(newForm);
                        TypeControlElement label  = new TypeControlElement();
                        TypeControlElement textB  = new TypeControlElement();
                        TypeControlElement comboB = new TypeControlElement();
                        TypeControlElement checkB = new TypeControlElement();
                        foreach (TypeControlElement tce in cont.TypeControlElementSet)
                        {
                            if (tce.Name == "Label")
                            {
                                label = tce;
                            }
                            if (tce.Name == "TextBox")
                            {
                                textB = tce;
                            }
                            if (tce.Name == "ComboBox")
                            {
                                comboB = tce;
                            }
                            if (tce.Name == "CheckBox")
                            {
                                checkB = tce;
                            }
                        }
                        int y = 70;
                        foreach (DataGridViewRow dgvr in dGVAttributes.Rows)
                        {   //создание новых контрольных элементов на форме
                            int x = 10;
                            switch (selectedEvent.Name)
                            {
                            case "Добавление":
                            case "Изменение":
                            case "Удаление":
                                foreach (Attribute at in selectedEntity.Attributes)
                                {
                                    if (dgvr.Cells[0].Value == at.Name)
                                    {
                                        //добавление элемента label
                                        ControlElement cEL = new ControlElement
                                        {
                                            Name      = at.Name,
                                            Enabled   = false,
                                            PositionX = x,
                                            PositionY = y,
                                            Length    = 80,
                                            Width     = 15
                                        };
                                        newForm.ControlElements.Add(cEL);
                                        label.ControlElements.Add(cEL);
                                        at.ControlElements.Add(cEL);
                                        x += 100;
                                        switch (at.Specification)       //обход спецификаций атрибутов
                                        {
                                        case "Первичный ключ":
                                            //добавление textbox
                                            ControlElement cETE = new ControlElement
                                            {
                                                Name      = at.Name,
                                                Enabled   = false,
                                                PositionX = x,
                                                PositionY = y,
                                                Length    = 15,
                                                Width     = 15
                                            };
                                            newForm.ControlElements.Add(cETE);
                                            textB.ControlElements.Add(cETE);
                                            at.ControlElements.Add(cETE);
                                            break;

                                        case "Скалярное поле":
                                            if (at.Type != "bool")
                                            {
                                                //добавление textbox
                                                ControlElement cET = new ControlElement
                                                {
                                                    Name      = at.Name,
                                                    Enabled   = false,
                                                    PositionX = x,
                                                    PositionY = y,
                                                    Length    = 120,
                                                    Width     = 15
                                                };
                                                newForm.ControlElements.Add(cET);
                                                textB.ControlElements.Add(cET);
                                                at.ControlElements.Add(cET);
                                            }
                                            else
                                            {
                                                //добавление checkbox
                                                ControlElement cECh = new ControlElement
                                                {
                                                    Name      = at.Name,
                                                    Enabled   = false,
                                                    PositionX = x,
                                                    PositionY = y,
                                                    Length    = 15,
                                                    Width     = 15
                                                };
                                                newForm.ControlElements.Add(cECh);
                                                checkB.ControlElements.Add(cECh);
                                                at.ControlElements.Add(cECh);
                                            }
                                            break;

                                        case "Внешний ключ":
                                            //добавление combobox
                                            ControlElement cEC = new ControlElement
                                            {
                                                Name      = at.Name,
                                                Enabled   = false,
                                                PositionX = x,
                                                PositionY = y,
                                                Length    = 80,
                                                Width     = 15
                                            };
                                            newForm.ControlElements.Add(cEC);
                                            comboB.ControlElements.Add(cEC);
                                            at.ControlElements.Add(cEC);
                                            break;
                                        }
                                        y += 30;
                                    }
                                }
                                break;

                            case "Поиск":
                                foreach (Attribute at in selectedEntity.Attributes)
                                {
                                    if (dgvr.Cells[0].Value == at.Name)
                                    {
                                        ControlElement cEL = new ControlElement
                                        {
                                            Name      = at.Name,
                                            Enabled   = false,
                                            PositionX = x,
                                            PositionY = y,
                                            Length    = 80,
                                            Width     = 15
                                        };
                                        newForm.ControlElements.Add(cEL);
                                        label.ControlElements.Add(cEL);
                                        at.ControlElements.Add(cEL);
                                        x += 100;
                                        ControlElement cEC = new ControlElement
                                        {
                                            Name      = at.Name,
                                            Enabled   = true,
                                            PositionX = x,
                                            PositionY = y,
                                            Length    = 80,
                                            Width     = 15
                                        };
                                        newForm.ControlElements.Add(cEC);
                                        comboB.ControlElements.Add(cEC);
                                        at.ControlElements.Add(cEC);
                                        y += 30;
                                    }
                                }
                                break;

                            case "Просмотр":
                                foreach (Attribute at in selectedEntity.Attributes)
                                {
                                    if (dgvr.Cells[0].Value == at.Name)
                                    {
                                        ControlElement cEL = new ControlElement
                                        {
                                            Name      = at.Name,
                                            Enabled   = false,
                                            PositionX = x,
                                            PositionY = y,
                                            Length    = 80,
                                            Width     = 15
                                        };
                                        newForm.ControlElements.Add(cEL);
                                        label.ControlElements.Add(cEL);
                                        at.ControlElements.Add(cEL);
                                        x += 100;
                                        switch (at.Specification)
                                        {
                                        case "Первичный ключ":
                                            ControlElement cETE = new ControlElement
                                            {
                                                Name      = at.Name,
                                                Enabled   = false,
                                                PositionX = x,
                                                PositionY = y,
                                                Length    = 15,
                                                Width     = 15
                                            };
                                            newForm.ControlElements.Add(cETE);
                                            textB.ControlElements.Add(cETE);
                                            at.ControlElements.Add(cETE);
                                            break;

                                        case "Скалярное свойство":
                                            if (at.Type != "bool")
                                            {
                                                ControlElement cET = new ControlElement
                                                {
                                                    Name      = at.Name,
                                                    Enabled   = false,
                                                    PositionX = x,
                                                    PositionY = y,
                                                    Length    = 120,
                                                    Width     = 15
                                                };
                                                newForm.ControlElements.Add(cET);
                                                textB.ControlElements.Add(cET);
                                                at.ControlElements.Add(cET);
                                            }
                                            else
                                            {
                                                ControlElement cECh = new ControlElement
                                                {
                                                    Name      = at.Name,
                                                    Enabled   = false,
                                                    PositionX = x,
                                                    PositionY = y,
                                                    Length    = 15,
                                                    Width     = 15
                                                };
                                                newForm.ControlElements.Add(cECh);
                                                checkB.ControlElements.Add(cECh);
                                                at.ControlElements.Add(cECh);
                                            }
                                            break;

                                        case "Внешний ключ":
                                            ControlElement cEC = new ControlElement
                                            {
                                                Name      = at.Name,
                                                Enabled   = false,
                                                PositionX = x,
                                                PositionY = y,
                                                Length    = 80,
                                                Width     = 15
                                            };
                                            newForm.ControlElements.Add(cEC);
                                            comboB.ControlElements.Add(cEC);
                                            at.ControlElements.Add(cEC);
                                            break;
                                        }
                                        y += 30;
                                    }
                                }
                                break;
                            }
                        }
                        cont.SaveChanges();
                        Hide();
                        FrMain main = new FrMain();
                        main.currentDBS = dBP.Id;
                        main.ShowDialog();
                        Close();
                    }
                    else
                    {
                        MessageBox.Show("В базе есть форма с таким названием");
                    }
                }
                else
                {
                    MessageBox.Show("Не введено название формы.");
                }
            }
            else
            {
                MessageBox.Show("Не выбраны атрибуты? на основе которых будет создаваться форма");
            }
        }
Ejemplo n.º 12
0
        //генерация отчета не работает из-за того, что не создается Excel.Application (метод
        //класса Report, SaveReport
        private void ReportGeneration_Click(object sender, EventArgs e)
        {
            //генерация отчетов
            if (ReportName.Text != "")
            {
                bool inDb = false;
                foreach (Entity en in dBP.Entities)
                {
                    foreach (Attribute at in en.Attributes)
                    {
                        foreach (Question qu in at.Questions)
                        {
                            foreach (Report rt in qu.Reports)
                                if (rt.Name == ReportName.Text)
                                {
                                    inDb = true;
                                    break;
                                }
                        }
                        if (inDb)
                            break;
                    }
                    if (inDb)
                        break;
                }
                if (!inDb)  //в текущем проекте нет ни одного отчета с таким же именем
                {
                    //запоминается путь до файла
                    string pathToXML = Environment.CurrentDirectory + "\\" + dBP.Id.ToString() + "." + ReportName.Text + "xlsx";
                    Report newRt = new Report
                    {
                        Name = ReportName.Text,
                        Description = pathToXML,
                        Format = FormatList.Text
                    };
                    currentQuest.Reports.Add(newRt);
                    cont.SaveChanges();
                    if (newRt.SaveReport(dBP.Id, pathToXML))    //создание отчета
                    {
                        //cont.SaveChanges();
                        Hide();
                        FrMain main = new FrMain();
                        main.currentDBS = dBP.Id;
                        main.ShowDialog();
                        Close();

                    }
                    else
                    {
                        currentQuest.Reports.Remove(newRt);
                        cont.ReportSet.Remove(newRt);
                        cont.SaveChanges();
                        newRt = new Report();
                        MessageBox.Show("Запрос пустой");
                    }
                }
                else
                    MessageBox.Show("Отчет с таким названием уже есть в данном проекте");
            }
            else
                MessageBox.Show("Название отчета не введено");
        }
Ejemplo n.º 13
0
 private void SaveQuestion_Click(object sender, EventArgs e)
 {
     //сохранение запросов
     if (QuestName.Text != "")
     {
         if (dGVConditions.Rows.Count != 0)
         {
             bool inDB = false;
             foreach (Entity en in dBP.Entities)
             {
                 foreach (Attribute at in en.Attributes)
                 {
                     foreach (Question que in at.Questions)
                     {
                         if (que.Name == QuestName.Text)
                         {
                             inDB = true;
                         }
                     }
                 }
             }
             if (!inDB)  //запросы с подобным именем есть в текущем проекте
             {
                 Question quest = new Question
                 {
                     Name        = QuestName.Text,
                     Description = QuestDesc.Text
                 };
                 cont.QuestionSet.Add(quest);    //добавление запроса в бд
                 Entity ent = new Entity();
                 foreach (DataGridViewRow dgvr in dGVAttributes.Rows)
                 {
                     foreach (Entity en in dBP.Entities)
                     {
                         if (en.Name == dgvr.Cells[4].Value.ToString())
                         {
                             ent = en;
                             break;
                         }
                     }
                     foreach (Attribute at in ent.Attributes)
                     {
                         if (at.Name == dgvr.Cells[0].Value.ToString() && at.Description == dgvr.Cells[1].Value.ToString() && at.Type == dgvr.Cells[2].Value.ToString() && at.Specification == dgvr.Cells[3].Value.ToString())
                         {
                             at.Questions.Add(quest);
                             quest.Attributes.Add(at);   //запросы связываются с атрибутами
                         }
                     }
                 }
                 foreach (DataGridViewRow dgvr in dGVConditions.Rows)
                 {
                     foreach (Entity en in cont.EntitySet)
                     {
                         if (en.Name == dgvr.Cells[2].Value.ToString())
                         {
                             ent = en;
                         }
                     }
                     Attribute atr = new Attribute();
                     foreach (Attribute at in ent.Attributes)
                     {
                         if (at.Name == dgvr.Cells[3].Value.ToString())
                         {
                             atr = at;
                         }
                     }
                     Condition cond = new Condition
                     {
                         Operation = dgvr.Cells[0].Value.ToString(),
                         Not       = (bool)dgvr.Cells[1].Value,
                         Compare   = dgvr.Cells[4].Value.ToString(),
                         Value     = dgvr.Cells[5].Value.ToString()
                     };
                     quest.Conditions.Add(cond); //запросы связываются с условиями
                     atr.Conditions.Add(cond);
                 }
                 cont.SaveChanges();
                 Hide();
                 FrMain main = new FrMain();
                 main.currentDBS = dBP.Id;
                 main.ShowDialog();
                 Close();
             }
             else
             {
                 MessageBox.Show("Запрос с таким названием уже есть в базе данных");
             }
         }
         else
         {
             MessageBox.Show("Нет ни одного условия");
         }
     }
     else
     {
         MessageBox.Show("Не введено название запроса");
     }
 }
Ejemplo n.º 14
0
        //нажатие на кнопку добавления связей
        private void BAddRelation_Click(object sender, EventArgs e)
        {   //название связи не введено или не выбраны сущности и кратности
            if (NameTBRelation.TextLength == 0 || ComboBoxEntity1.Text == "" || ComboBoxEntity2.Text == "" || ComboBoxK.Text == "")
            {
                MessageBox.Show("Нельзя создать связь. Пожалуйста, введите ее название, а также выберите сущность и кратность.", "Ошибка!");
            }

            else
            {
                bool flag = false;
                foreach (Relation r in cont.RelationSet)    //проверка существующих связей
                {
                    if (r.Name == NameTBRelation.Text)
                    {
                        flag = true;
                    }
                }
                if (flag == true)
                {
                    MessageBox.Show("Связь с таким именем уже имеется в системе. Пожалуйста, придумайте другое название.", "Ошибка!");
                }
                else
                {
                    if (TextBAtt1.TextLength == 0)
                    {
                        MessageBox.Show("Нельзя добавить атрибут. Пожалуйста, введите его название, описание (необязательно), тип данных и тип атрибута.", "Ошибка!");
                        TextBAtt1.Clear();
                        TextBAttDesc1.Clear();
                    }
                    else
                    {
                        bool flag1 = false;
                        foreach (Attribute at in cont.AttributeSet)
                        {
                            if (at.Entity.Name == ComboBoxEntity1.Text)
                            {
                                if (at.Name == TextBAtt1.Text)
                                {
                                    flag1 = true;
                                }
                            }
                        }
                        if (flag1 == true)
                        {
                            MessageBox.Show("Данная сущность уже имеет атрибут с таким именем. Пожалуйста, придумайте другое название.", "Ошибка!");
                            TextBAtt1.Clear();
                            TextBAttDesc1.Clear();
                        }
                        else
                        {
                            //для разных кратностей разные действия
                            switch (ComboBoxK.Items[ComboBoxK.SelectedIndex].ToString())
                            {
                            //добавляем атрибуты
                            case "0..1:0..1":
                            case "0..1:1":
                            case "0..1:*":
                            case ":0..1":
                            case "1:1":
                            case "1:*":
                            case "*:0..1":
                            case "*:1":
                                //добавление в бд новых атрибутов, которые связываются с сущностями
                                Attribute atr1 = new Attribute
                                {
                                    Name          = TextBAtt1.Text,
                                    Description   = TextBAttDesc1.Text,
                                    Type          = "int",
                                    Specification = "Внешний ключ"
                                };
                                ent1.Attributes.Add(atr1);
                                Attribute atr2 = new Attribute
                                {
                                    Name          = TextBAtt2.Text,
                                    Description   = TextBAttDesc2.Text,
                                    Type          = "int",
                                    Specification = "Внешний ключ"
                                };
                                ent2.Attributes.Add(atr2);
                                //добавление связи
                                Relation rel = new Relation
                                {
                                    Name         = NameTBRelation.Text,
                                    Description  = DescTBRelation.Text,
                                    Multiplicity = ComboBoxK.Text
                                                   //Source = atr1,
                                                   //Target = atr2
                                };
                                //атрибуты связываются с созданной связью
                                atr1.RelToTarget.Add(rel);
                                atr2.RelFromSource.Add(rel);
                                cont.SaveChanges();
                                break;

                            case "*:*":
                                //создание связи многие со многими
                                //создаются новые атрибуты для выбранных сущностей
                                Attribute atr11 = new Attribute
                                {
                                    Name          = TextBAtt1.Text,
                                    Description   = TextBAttDesc1.Text,
                                    Type          = "int",
                                    Specification = "Внешний ключ"
                                };
                                ent1.Attributes.Add(atr11);
                                Attribute atr21 = new Attribute
                                {
                                    Name          = TextBAtt2.Text,
                                    Description   = TextBAttDesc2.Text,
                                    Type          = "int",
                                    Specification = "Внешний ключ"
                                };
                                ent2.Attributes.Add(atr21);
                                //создается промежуточная сущность с ид первой и второй сущности
                                Entity ent3 = new Entity
                                {
                                    Name        = ent1.Name + ent2.Name,
                                    Description = "Таблица, связывающая таблицы " + ent1.Name + " и " + ent2.Name + " в связи *:*."
                                };
                                //создаются атрибуты для промежуточной сущности
                                Attribute atr31 = new Attribute
                                {
                                    Name          = TextBAtt1.Text,
                                    Description   = TextBAttDesc1.Text,
                                    Type          = "int",
                                    Specification = "Внешний ключ"
                                };
                                ent3.Attributes.Add(atr31);
                                Attribute atr32 = new Attribute
                                {
                                    Name          = TextBAtt2.Text,
                                    Description   = TextBAttDesc2.Text,
                                    Type          = "int",
                                    Specification = "Внешний ключ"
                                };
                                ent3.Attributes.Add(atr32);
                                //создаются связи, которые связывают выбранные сущности с промежуточной связью
                                Relation rel1 = new Relation
                                {
                                    Name         = NameTBRelation.Text,
                                    Description  = DescTBRelation.Text,
                                    Multiplicity = "1:*"
                                                   //Source = atr1,
                                                   //Target = atr2
                                };
                                DBP.Entities.Add(ent3);
                                atr11.RelToTarget.Add(rel1);
                                atr31.RelFromSource.Add(rel1);
                                Relation rel2 = new Relation
                                {
                                    Name         = NameTBRelation.Text,
                                    Description  = DescTBRelation.Text,
                                    Multiplicity = "1:*"
                                                   //Source = atr1,
                                                   //Target = atr2
                                };
                                atr21.RelToTarget.Add(rel2);
                                atr32.RelFromSource.Add(rel2);
                                cont.SaveChanges();
                                break;
                            }

                            //после добавления возвращаемся на главную форму
                            Hide();
                            FrMain AddR = new FrMain();
                            AddR.currentDBS = DBP.Id;
                            AddR.ShowDialog();
                            Close();
                        }
                    }
                }
            }
        }