static void Main(string[] args)
        {
            using (var context = new BloggingContext())
            {
                context.Database.EnsureDeleted();
                context.Database.EnsureCreated();
            }

            using (var context = new BloggingContext())
            {
                // seeding database
                context.Blogs.Add(new Blog {
                    Url = "http://sample.com/blog"
                });
                context.Blogs.Add(new Blog {
                    Url = "http://sample.com/another_blog"
                });
                context.SaveChanges();
            }

            using (var context = new BloggingContext())
            {
                #region Tracking
                var blog = context.Blogs.SingleOrDefault(b => b.BlogId == 1);
                blog.Rating = 5;
                context.SaveChanges();
                #endregion
            }

            using (var context = new BloggingContext())
            {
                #region NoTracking
                var blogs = context.Blogs
                            .AsNoTracking()
                            .ToList();
                #endregion
            }

            using (var context = new BloggingContext())
            {
                #region ContextDefaultTrackingBehavior
                context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;

                var blogs = context.Blogs.ToList();
                #endregion
            }

            using (var context = new BloggingContext())
            {
                #region CustomProjection1
                var blog = context.Blogs
                           .Select(b =>
                                   new
                {
                    Blog      = b,
                    PostCount = b.Posts.Count()
                });
                #endregion
            }

            using (var context = new BloggingContext())
            {
                #region CustomProjection2
                var blog = context.Blogs
                           .Select(b =>
                                   new
                {
                    Blog = b,
                    Post = b.Posts.OrderBy(p => p.Rating).LastOrDefault()
                });
                #endregion
            }

            using (var context = new BloggingContext())
            {
                #region CustomProjection3
                var blog = context.Blogs
                           .Select(b =>
                                   new
                {
                    Id  = b.BlogId,
                    Url = b.Url
                });
                #endregion
            }

            using (var context = new BloggingContext())
            {
                #region ClientProjection
                var blogs = context.Blogs
                            .OrderByDescending(blog => blog.Rating)
                            .Select(blog => new
                {
                    Id  = blog.BlogId,
                    Url = StandardizeUrl(blog)
                })
                            .ToList();
                #endregion
            }
        }