public static List <Catalog_level> UpdateCatalogLevel(CatalogLevelViewModel viewModel)
        {
            using (var connect = new Catalog_Level_WPFContainer())
            {
                // отключим авто отслеживание изменений в БД для улучшения производительности
                connect.Configuration.AutoDetectChangesEnabled = false;

                foreach (var item in connect.Catalog_level)
                {
                    if (item.ID == viewModel.ID)
                    {
                        item.Name = viewModel.Name;
                    }
                }

                // обнаружим изменения
                connect.ChangeTracker.DetectChanges();

                connect.SaveChanges();

                var catalogLevels = connect.Catalog_level.ToList();

                return(catalogLevels);
            }
        }
        public static List <Catalog_level> LoadCatalogLevels()
        {
            using (var connect = new Catalog_Level_WPFContainer())
            {
                var catalogLevels = connect.Catalog_level.ToList();

                return(catalogLevels);
            }
        }
        public static void DataInitializer()
        {
            var connect = new Catalog_Level_WPFContainer();

            if (!connect.Catalog_level.Any <Catalog_level>())
            {
                DataInitialization.Seed(connect);
            }
        }
        public static List <Catalog_level> AddCatalogLevel(CatalogLevelViewModel viewModel, string valueTextBox)
        {
            using (var connect = new Catalog_Level_WPFContainer())
            {
                connect.Configuration.AutoDetectChangesEnabled = false;

                connect.Catalog_level.Add(new Catalog_level {
                    Name = valueTextBox, ParentID = viewModel.ID
                });

                connect.ChangeTracker.DetectChanges();

                connect.SaveChanges();

                var catalogLevels = connect.Catalog_level.ToList();

                return(catalogLevels);
            }
        }
        public static List <Catalog_level> RemoveCatalogLevel(int id)
        {
            using (var connect = new Catalog_Level_WPFContainer())
            {
                connect.Configuration.AutoDetectChangesEnabled = false;

                var catalogLevels = connect.Catalog_level.ToList();

                foreach (var item in catalogLevels)
                {
                    if (id == item.ID)
                    {
                        connect.Catalog_level.Remove(item);
                        connect.ChangeTracker.DetectChanges();
                        connect.SaveChanges();
                    }
                }

                var catalogLevelsNew = connect.Catalog_level.ToList();

                return(catalogLevelsNew);
            }
        }
        public static void Seed(Catalog_Level_WPFContainer connect)
        {
            var catalogs = new List <Catalogs>()
            {
                new Catalogs {
                    Name = "VOLVO"
                },
                new Catalogs {
                    Name = "ER"
                }
            };

            catalogs.ForEach(x => connect.Catalogs.AddOrUpdate(c => new { c.Name }, x));

            var aggregates = new List <Aggregates>()
            {
                new Aggregates {
                    Name = "КПП", Catalogs = catalogs[0]
                },
                new Aggregates {
                    Name = "Двигатель", Catalogs = catalogs[1]
                },
                new Aggregates {
                    Name = "КПП", Catalogs = catalogs[1]
                }
            };

            aggregates.ForEach(x => connect.Aggregates.AddOrUpdate(a => new { a.Name, a.CatalogID }, x));

            var models = new List <Models>()
            {
                new Models {
                    Name = "A365", Aggregates = aggregates[0]
                },
                new Models {
                    Name = "M4566", Aggregates = aggregates[1]
                },
                new Models {
                    Name = "FG4511", Aggregates = aggregates[1]
                },
                new Models {
                    Name = "T45459", Aggregates = aggregates[2]
                }
            };

            models.ForEach(x => connect.Models.AddOrUpdate(m => new { m.Name, m.AggregateID }, x));
            connect.SaveChanges();

            var sampleCatalogs = connect.Catalogs.ToList();

            foreach (var item in sampleCatalogs)
            {
                cl_Consol.Add(new CL_Consolidation
                {
                    ID         = (cl_Consol.Count) + 1,
                    Name       = item.Name,
                    Catalog_ID = item.ID
                });
            }

            var sampleAggregates = connect.Aggregates.ToList();

            foreach (var item in sampleAggregates)
            {
                cl_Consol.Add(new CL_Consolidation
                {
                    ID                   = (cl_Consol.Count) + 1,
                    Name                 = item.Name,
                    Aggregate_ID         = item.ID,
                    Aggregate_catalog_ID = item.CatalogID
                });
            }

            var sampleModels = connect.Models.ToList();

            foreach (var item in sampleModels)
            {
                cl_Consol.Add(new CL_Consolidation
                {
                    ID   = (cl_Consol.Count) + 1,
                    Name = item.Name,
                    Model_aggregate_ID = item.AggregateID
                });
            }

            var selectCatalogsFromCl_Consol = from cl in cl_Consol
                                              where cl.Catalog_ID != null
                                              select new
            {
                CLC_ID         = cl.ID,
                CLC_Parent_ID  = cl.Parent_ID,
                CLC_Name       = cl.Name,
                CLC_Catalog_ID = cl.Catalog_ID
            };

            var selectAggregatesFromCl_Consol = from cl in cl_Consol
                                                join c in selectCatalogsFromCl_Consol
                                                on cl.Aggregate_catalog_ID equals c.CLC_Catalog_ID
                                                where cl.Aggregate_catalog_ID != null
                                                select new
            {
                CLA_ID           = cl.ID,
                CLA_Parent_ID    = c.CLC_ID,
                CLA_Name         = cl.Name,
                CLA_Aggregate_ID = cl.Aggregate_ID
            };

            var selectModelsFromCl_Consol = from cl in cl_Consol
                                            join a in selectAggregatesFromCl_Consol
                                            on cl.Model_aggregate_ID equals a.CLA_Aggregate_ID
                                            where cl.Model_aggregate_ID != null
                                            select new
            {
                CLM_ID        = cl.ID,
                CLM_Parent_ID = a.CLA_ID,
                CLM_Name      = cl.Name
            };

            foreach (var item in selectCatalogsFromCl_Consol)
            {
                connect.Catalog_level.Add(new Catalog_level
                {
                    ID       = item.CLC_ID,
                    ParentID = item.CLC_Parent_ID,
                    Name     = item.CLC_Name
                });
            }

            foreach (var item in selectAggregatesFromCl_Consol)
            {
                connect.Catalog_level.AddOrUpdate(new Catalog_level
                {
                    ID       = item.CLA_ID,
                    ParentID = item.CLA_Parent_ID,
                    Name     = item.CLA_Name
                });
            }

            foreach (var item in selectModelsFromCl_Consol)
            {
                connect.Catalog_level.AddOrUpdate(new Catalog_level
                {
                    ID       = item.CLM_ID,
                    ParentID = item.CLM_Parent_ID,
                    Name     = item.CLM_Name
                });
            }

            connect.SaveChanges();
        }