//Fixing: Eager Loading, Iteration using Foreach loop (Deffered Execution)
        public JsonResult EagerLoadingForeach()
        {
            var context  = new OrdersContext();
            var products = context.Products.Include(x => x.Category);

            //check SQL Profiler here

            var productDcs = new List <ProductDC>();

            foreach (var x in products)
            {
                var product = new ProductDC
                {
                    ProductId   = x.ProductId,
                    ProductName = x.ProductName,
                    Category    = new CategoryDC
                    {
                        CategoryId   = x.Category.CategoryId,
                        CategoryName = x.Category.CategoryName
                    }
                };
                productDcs.Add(product);
                //check SQL Profiler here
            }

            return(Json(productDcs, JsonRequestBehavior.AllowGet));
        }
        public JsonResult ExplicitlyLoadingForSingleEntity()
        {
            var context = new OrdersContext();

            var product = context.Products.Find(1);

            context.Entry(product).Reference(p => p.Category).Load();

            var productDc = new ProductDC
            {
                ProductId   = product.ProductId,
                ProductName = product.ProductName,
                Category    = new CategoryDC()
                {
                    CategoryId   = product.Category.CategoryId,
                    CategoryName = product.Category.CategoryName
                }
            };

            return(Json(productDc, JsonRequestBehavior.AllowGet));
        }