private void DecodeBlogsAndGrades(XElement element, Dictionary<string, Tag> tagsDict) { Bloggers = new List<Blog>(); Posts = new List<Post>(); PostTagGrades = new List<PostTagGrade>(); foreach (var blogXml in element.Elements("Blog")) { var newBlogger = new Blog() { Name = blogXml.Element("Name").Value, EmailAddress = blogXml.Element("Email").Value, Posts = new Collection<Post>() }; foreach (var postXml in blogXml.Element("Posts").Elements("Post")) { var newPost = new Post() { Blogger = newBlogger, Title = postXml.Element("Title").Value, Content = postXml.Element("Content").Value, Tags = postXml.Element("TagSlugs").Value.Split(',').Select(x => tagsDict[x.Trim()]).ToList() }; //look for PostTagGrades for this post foreach (var postTagXml in postXml.Elements("PostTagGrade")) { var newPostTag = new PostTagGrade { PostPart = newPost, TagPart = tagsDict[postTagXml.Element("TagSlug").Value.Trim()], Grade = int.Parse( postTagXml.Element("Grade").Value) }; PostTagGrades.Add( newPostTag); } Posts.Add(newPost); newBlogger.Posts.Add(newPost); } Bloggers.Add(newBlogger); } }
public void Check11PostTagGradesCopyKeysBackToDtoOk() { using (var db = new SampleWebAppDb()) { //SETUP var timer = new Stopwatch(); var postTag = new PostTagGrade { PostId = 123, TagId = 456}; var dto = new SimplePostTagGradeDto(); //ATTEMPT timer.Start(); dto.AfterCreateCopyBackKeysToDtoIfPresent(db, postTag); timer.Stop(); Console.WriteLine("took {0:f3} ms", 1000.0 * timer.ElapsedTicks / Stopwatch.Frequency); //VERIFY dto.PostId.ShouldEqual(postTag.PostId); dto.TagId.ShouldEqual(postTag.TagId); } }
public void Check32DeleteViaRemoveOk() { using (var db = new SampleWebAppDb()) { //SETUP var snap = new DbSnapShot(db); var firstPostTagGrades = db.PostTagGrades.AsNoTracking().First(); //ATTEMPT var ptgToDelete = new PostTagGrade { PostId = firstPostTagGrades.PostId, TagId = firstPostTagGrades.TagId }; db.PostTagGrades.Attach(ptgToDelete); db.PostTagGrades.Remove(ptgToDelete); var status = db.SaveChangesWithChecking(); //VERIFY status.IsValid.ShouldEqual(true, status.Errors); snap.CheckSnapShot(db, 0, 0, 0, 0, -1); } }