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(); }
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(); }