Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Microsoft.Data.Entity;
- using Microsoft.Data.Entity.Infrastructure;
- using Microsoft.Extensions.Configuration;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.Logging;
- using ConsoleApplication2.Model;
- namespace ConsoleApplication2
- {
- class Program
- {
- public static IConfigurationRoot Configuration { get; set; }
- public static ApplicationDbContext myDbContext;
- static void Main(string[] args)
- {
- Startup(args);
- DebugPrint("Start");
- Seed(myDbContext);
- Test1(myDbContext);
- Test2(myDbContext);
- DebugPrint("Press Enter to quit:");
- Console.ReadLine();
- }
- private static void Test1(ApplicationDbContext myDbContext)
- {
- var ggparent = (from ggp in myDbContext.GrandGrandParent
- .Include(ggp => ggp.GrandParents)
- .ThenInclude(x => x.Parents)
- where ggp.ID == 3
- select ggp).FirstOrDefault();
- DebugPrint("GrandGrandParent:");
- DebugPrint(ggparent);
- DebugPrint("WithParents:");
- DebugPrint(ggparent);
- foreach (var gparent in ggparent.GrandParents)
- {
- DebugPrint(gparent);
- if (gparent.Parents == null)
- {
- gparent.Parents = (from p in myDbContext.Parent where p.GrandParent.ID == gparent.ID select p).ToList();
- }
- foreach (var parent in gparent.Parents)
- {
- DebugPrint(parent);
- parent.Children = (from c in myDbContext.Child where c.Parent.ID == parent.ID select c).ToList();
- foreach (var child in parent.Children)
- {
- DebugPrint(child);
- }
- }
- }
- int changeCount = myDbContext.SaveChanges();
- DebugPrint(string.Format("ChangeCount={0}", changeCount));
- }
- private static void Test2(ApplicationDbContext myDbContext)
- {
- DebugPrint("Second try");
- var gparents = from gp in myDbContext.GrandParent
- .Include(gparent => gparent.GrandGrandParent)
- .Include(gparent => gparent.Parents)
- .ThenInclude(children => children.Select(child => child.ID))
- where gp.GrandGrandParent.ID == 2
- select gp;
- DebugPrint(gparents.FirstOrDefault().GrandGrandParent);
- foreach (var gparent in gparents)
- {
- DebugPrint(gparent);
- if (gparent.Parents == null)
- {
- gparent.Parents = (from p in myDbContext.Parent where p.GrandParent.ID == gparent.ID select p).ToList();
- }
- foreach (var parent in gparent.Parents)
- {
- DebugPrint(parent);
- if (parent.Children == null)
- {
- parent.Children = (from c in myDbContext.Child where c.Parent.ID == parent.ID select c).ToList();
- }
- foreach (var child in parent.Children)
- {
- DebugPrint(child);
- }
- }
- }
- }
- private static void Seed(ApplicationDbContext myDbContext)
- {
- GrandGrandParent grandgrandparent;
- GrandParent grandparent;
- Parent parent;
- Child child;
- int g = 1;
- if (myDbContext.GrandGrandParent.FirstOrDefault() != null)
- {
- return;
- }
- for (int i = 0; i < 4; i++)
- {
- grandgrandparent = new GrandGrandParent() { Name = FormatName("ggp", i, g++) };
- myDbContext.GrandGrandParent.Add(grandgrandparent);
- for (int j = 0; j < 4; j++)
- {
- grandparent = new GrandParent() { Name = FormatName("gp", j, g++), GrandGrandParent = grandgrandparent };
- grandgrandparent.GrandParents.Add(grandparent);
- myDbContext.GrandParent.Add(grandparent);
- for (int k = 0; k < 4; k++)
- {
- parent = new Parent() { Name = FormatName("p", k, g++), GrandParent = grandparent };
- grandparent.Parents.Add(parent);
- myDbContext.Parent.Add(parent);
- for (int l = 0; l < 4; l++)
- {
- child = new Child() { Name = FormatName("c", l, g++), Parent = parent };
- parent.Children.Add(child);
- myDbContext.Child.Add(child);
- }
- }
- }
- }
- myDbContext.SaveChanges();
- }
- private static string FormatName(string prefix, int local, int global)
- {
- return String.Format("{0}-{1} ({2})", prefix, local, global);
- }
- private static void DebugPrint(GrandGrandParent ggp)
- {
- DebugPrint(ggp.Name);
- }
- private static void DebugPrint(GrandParent gp)
- {
- DebugPrint(" " + gp.Name);
- }
- private static void DebugPrint(Parent p)
- {
- DebugPrint(" " + p.Name);
- }
- private static void DebugPrint(Child c)
- {
- DebugPrint(" " + c.Name);
- }
- private static void DebugPrint(string s)
- {
- //System.Diagnostics.Debug.WriteLine(s);
- Console.WriteLine(s);
- }
- public static void Startup(string[] args)
- {
- var builder = new ConfigurationBuilder();
- builder.AddEnvironmentVariables();
- builder.AddCommandLine(args);
- Configuration = builder.Build();
- myDbContext = new ApplicationDbContext();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement