Esempio n. 1
0
        static void InitDB()
        {
            Console.WriteLine("/* ----------------------------------------------------");
            Console.WriteLine("----  Seeding local Database --------------------------");
            Console.WriteLine("-----------------------------------------------------*/");
            Console.WriteLine("");
            // Local DB Connection string
            var compositeDb = CompositeDb.GetContext(
                "Server=(localdb)\\mssqllocaldb;Database=Composite;Trusted_Connection=True;MultipleActiveResultSets=true");

            // seed Created Database with one model.
            CompositeDb.DbSeed(compositeDb);

            Console.WriteLine("\r\n/* ----------------------------------------------------");
            Console.WriteLine("----  retrieve the data from database -----------------");
            Console.WriteLine("-----------------------------------------------------*/");
            Console.WriteLine("");
            var start = compositeDb.Composites.Single(x => x.ParentId == null);

            compositeDb.GetStructureRecursively(start, start.Id).Wait();
            start.Print();

            Console.WriteLine("\r\n/* ----------------------------------------------------");
            Console.WriteLine("----  split alternatives into two separate tree's -----");
            Console.WriteLine("-----------------------------------------------------*/");
            Console.WriteLine("");
            var alternatives = start.GetEnumerableMember(1);


            Console.WriteLine("\r\n/* ----------------------------------------------------");
            Console.WriteLine("----  walk through each alternatives ------------------");
            Console.WriteLine("-----------------------------------------------------*/");
            Console.WriteLine("");
            // note: Json.Serializer (like in complex() example) does not work here due to the cyclomatic references

            var count = 0;

            foreach (var alternative in alternatives)
            {
                Console.Write("\r\n alternative " + count++ + " : ");
                var properties = ElementaryComposite.GetFlatComposites(alternative.GetEnumerator());
                foreach (var item in properties)
                {
                    Console.Write(item.Name + ", ");
                }
            }

            Console.ReadKey();
        }
Esempio n. 2
0
        public static void DbSeed(CompositeDb context)
        {
            context.Database.EnsureDeleted();
            context.Database.EnsureCreated();

            var root          = new ComplexCompositeSequence("root");
            var seqencial_1   = new ComplexCompositeSequence("OpenShop");
            var seqencial_2   = new ComplexCompositeSequence("JobShop");
            var alternative_3 = new ComplexCompositeAlternative("Alternative");

            root.Children.Add(seqencial_1);
            root.Children.Add(seqencial_2);
            root.Children.Add(alternative_3);

            seqencial_1.Children.Add(new ElementaryComposite("OS : x"));
            seqencial_1.Children.Add(new ElementaryComposite("OS : y"));
            seqencial_1.Children.Add(new ElementaryComposite("OS : z"));

            var finiteComposite_1 = new ElementaryComposite("JS : one");

            var finiteComposite_2 = new ElementaryComposite("JS : two");
            var finiteComposite_3 = new ElementaryComposite("JS : three");

            seqencial_2.Children.Add(finiteComposite_1);
            seqencial_2.Children.Add(finiteComposite_2);
            seqencial_2.Children.Add(finiteComposite_3);


            alternative_3.Children.Add(new ElementaryComposite("Alternative: one"));
            var seqencial_4 = new ComplexCompositeSequence("Alternative: two");

            alternative_3.Children.Add(seqencial_4);

            var finiteComposite_4 = new ElementaryComposite("JS: five");
            var finiteComposite_5 = new ElementaryComposite("JS: six");

            seqencial_4.Children.Add(finiteComposite_4);
            seqencial_4.Children.Add(finiteComposite_5);

            // set hirachie

            seqencial_2.Predecessor   = seqencial_1;
            alternative_3.Predecessor = seqencial_2;

            finiteComposite_2.Predecessor = finiteComposite_1;
            finiteComposite_3.Predecessor = finiteComposite_2;
            finiteComposite_5.Predecessor = finiteComposite_4;

            context.Add(root);
            context.SaveChanges();


            //var rs1 = new Relationship {Predecessor = seqencial_1, Successor = seqencial_2};
            //var rs2 = new Relationship {Predecessor = seqencial_2, Successor = alternative_3};
            //var rs3 = new Relationship {Predecessor = finiteComposite_1, Successor = finiteComposite_2};
            //var rs4 = new Relationship {Predecessor = finiteComposite_2, Successor = finiteComposite_3};
            //var rs5 = new Relationship {Predecessor = finiteComposite_4, Successor = finiteComposite_5};
            //
            //context.Relationships.AddRange(new List<Relationship>() {rs1, rs2, rs3, rs4, rs5});
            //context.SaveChanges();
        }