private void Ok()
        {
            //TODO: should to be moved to repo?
            var matchedParts = from parts in context.Set <TEntity>()
                               where parts.Name.Equals(Entity.Name, StringComparison.OrdinalIgnoreCase)
                               select parts;
            var existingPart = matchedParts.FirstOrDefault();

            if (existingPart != null)
            {
                MessageBox.Show("Запись с таким именем уже существует",
                                "Ошибка",
                                MessageBoxButton.OK,
                                icon: MessageBoxImage.Error);
                return;
            }

            try
            {
                context.SaveChanges();
                DialogResult = true;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message,
                                "Ошибка",
                                MessageBoxButton.OK,
                                icon: MessageBoxImage.Error);
            }
        }
        private void Ok()
        {
            var matchedParts = from parts in context.Set <TEntity>()
                               where parts.Name.Equals(NewEntity.Name, StringComparison.OrdinalIgnoreCase)
                               select parts;

            var existingPart = matchedParts.FirstOrDefault();

            //if part already exist in db add reference to it
            if (existingPart != null)
            {
                if (EntitiesMapping != null)
                {
                    //check for existing relation. show error if exist
                    var existingMappings = from mappings in context.Set <TMapping>()
                                           where mappings.Child.Name
                                           .Equals(NewEntity.Name, StringComparison.OrdinalIgnoreCase) &&
                                           mappings.Parent.Name
                                           .Equals(parent.Entity.Name, StringComparison.OrdinalIgnoreCase)
                                           select mappings;

                    if (existingMappings.Count() != 0)
                    {
                        MessageBox.Show("Запись с таким именем уже существует",
                                        "Ошибка",
                                        MessageBoxButton.OK,
                                        icon: MessageBoxImage.Error);
                        return;
                    }

                    EntitiesMapping.Child = existingPart;
                    parent.Entity.ChildrenMappings.Add(EntitiesMapping);
                }
                else                 //message if entity exist in root
                {
                    MessageBox.Show("Запись с таким именем уже существует",
                                    "Ошибка",
                                    MessageBoxButton.OK,
                                    icon: MessageBoxImage.Error);
                    return;
                }
            }
            else
            {
                if (EntitiesMapping != null)
                {
                    EntitiesMapping.Child = NewEntity;
                    parent.Entity.ChildrenMappings.Add(EntitiesMapping);
                }
                context.AddEntity(NewEntity);
            }

            if (!context.Save(out string err))
            {
                MessageBox.Show(err,
                                "Ошибка",
                                MessageBoxButton.OK,
                                icon: MessageBoxImage.Error);
            }
            else
            {
                DialogResult = true;
            }
        }