Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
            }
        }