需要访问和编辑数据库中的属性

时间:2017-05-25 14:18:42

标签: c# database asp.net-mvc-5

订单已在此方法中创建并保存

public async Task<ActionResult> FirstClassCreate(FormCollection values)
    {
        var order = new Order();
        TryUpdateModel(order);
        var customer = db.Users.FirstOrDefault(x => x.Email == User.Identity.Name);
        var cart = ShoppingCart.GetCart(this.HttpContext);

        try
        {
            order.DeliveryDate = DateTime.Now.AddDays(1);

            order.DeliveryMethod = "First Class";
            order.FirstName = customer.FirstName;
            order.LastName = customer.LastName;
            order.PostalCode = customer.PostalCode;
            order.State = customer.State;
            order.City = customer.City;
            order.Email = customer.Email;
            order.Country = customer.Country;
            order.Phone = customer.PhoneNumber;
            order.Address = customer.Address;
            order.HasPaid = false;
            order.Username = customer.Email;
            order.OrderDate = DateTime.Now;
            var currentUserId = User.Identity.GetUserId();
            order.Total = cart.GetFirstClass();

            if (order.SaveInfo && !order.Username.Equals("guest@guest.com"))
            {
                var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
                var store = new UserStore<ApplicationUser>(new ApplicationDbContext());
                var ctx = store.Context;
                var currentUser = manager.FindById(User.Identity.GetUserId());

                //Save this back
                //http://stackoverflow.com/questions/20444022/updating-user-data-asp-net-identity
                //var result = await UserManager.UpdateAsync(currentUser);
                await ctx.SaveChangesAsync();

                await storeDB.SaveChangesAsync();
            }

            //Save Order
            storeDB.Orders.Add(order);
            await storeDB.SaveChangesAsync();

            //Process the order
            cart = ShoppingCart.GetCart(this.HttpContext);
            order.Total = cart.GetFirstClass();

            order = cart.CreateOrder(order);

            return RedirectToAction("FirstClass", "Checkouts", order);
        }
        catch
        {
            //Invalid - redisplay with errors
            return View(order);
        }
    }   

我需要访问订单数据库并更改特定订单的属性,使用电子邮件作为唯一标识符并搜索最新版本(使用订单日期'haspaid' = false找到最新版本。)

 using ()//Insert database context here)
        {
            //Search for order in the database, try using the email as the Unique Identifire and search for the newest where haspaid = false

            //Change the haspaid attribute to true
            var orders = from o in db.Orders
                         where o.Email == User.Identity.Name, o.HasPaid = false, //Newest
                         select o;
            order.HasPaid = true;
            db.Orders.SaveChanges();
             //save database changes
        }

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您不知道如何查询要更新的记录。因此,您需要使用Where()过滤记录并使用Max()函数来获取最新日期。

var orderToBeChanged = db.Orders
    .Where(o => o.HasPaid == false && o => o.Email == User.Identity.Name)
    .Max(o => o.OrderDate);