private IEnumerable <ITemplate> CreateHierarchy(ITemplateRepository repository, IDatabaseUnitOfWork unitOfWork) { var parent = new Template("parent", "parent") { Content = @"<%@ Master Language=""C#"" %>" }; var child1 = new Template("child1", "child1") { Content = @"<%@ Master Language=""C#"" %>" }; var toddler1 = new Template("toddler1", "toddler1") { Content = @"<%@ Master Language=""C#"" %>" }; var toddler2 = new Template("toddler2", "toddler2") { Content = @"<%@ Master Language=""C#"" %>" }; var baby1 = new Template("baby1", "baby1") { Content = @"<%@ Master Language=""C#"" %>" }; var child2 = new Template("child2", "child2") { Content = @"<%@ Master Language=""C#"" %>" }; var toddler3 = new Template("toddler3", "toddler3") { Content = @"<%@ Master Language=""C#"" %>" }; var toddler4 = new Template("toddler4", "toddler4") { Content = @"<%@ Master Language=""C#"" %>" }; var baby2 = new Template("baby2", "baby2") { Content = @"<%@ Master Language=""C#"" %>" }; child1.MasterTemplateAlias = parent.Alias; child1.MasterTemplateId = new Lazy <int>(() => parent.Id); child2.MasterTemplateAlias = parent.Alias; child2.MasterTemplateId = new Lazy <int>(() => parent.Id); toddler1.MasterTemplateAlias = child1.Alias; toddler1.MasterTemplateId = new Lazy <int>(() => child1.Id); toddler2.MasterTemplateAlias = child1.Alias; toddler2.MasterTemplateId = new Lazy <int>(() => child1.Id); toddler3.MasterTemplateAlias = child2.Alias; toddler3.MasterTemplateId = new Lazy <int>(() => child2.Id); toddler4.MasterTemplateAlias = child2.Alias; toddler4.MasterTemplateId = new Lazy <int>(() => child2.Id); baby1.MasterTemplateAlias = toddler2.Alias; baby1.MasterTemplateId = new Lazy <int>(() => toddler2.Id); baby2.MasterTemplateAlias = toddler4.Alias; baby2.MasterTemplateId = new Lazy <int>(() => toddler4.Id); repository.AddOrUpdate(parent); repository.AddOrUpdate(child1); repository.AddOrUpdate(child2); repository.AddOrUpdate(toddler1); repository.AddOrUpdate(toddler2); repository.AddOrUpdate(toddler3); repository.AddOrUpdate(toddler4); repository.AddOrUpdate(baby1); repository.AddOrUpdate(baby2); unitOfWork.Commit(); return(new[] { parent, child1, child2, toddler1, toddler2, toddler3, toddler4, baby1, baby2 }); }