C# 需要访问和编辑数据库中的属性
订单是用这种方法创建和保存的C# 需要访问和编辑数据库中的属性,c#,database,asp.net-mvc-5,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);
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);
}
}
如果我理解正确,您不知道如何查询要更新的记录。因此,您需要使用
Where()
过滤记录,并使用Max()
函数获取最新日期
var orderToBeChanged = db.Orders
.Where(o => o.HasPaid == false && o => o.Email == User.Identity.Name)
.Max(o => o.OrderDate);
您面临什么问题,或者希望有人代表您编写代码?您的问题很不清楚。你这样做到底有什么问题?你有例外吗?或者结果是否未存储到数据库中?或者你还有什么问题?唯一意味着只有1个,为什么你需要进一步过滤?您的结构中没有OrderID吗?有一个订单id,但它链接到用户的电子邮件,因此如果用户有多个订单,这将是一个问题
var orderToBeChanged = db.Orders
.Where(o => o.HasPaid == false && o => o.Email == User.Identity.Name)
.Max(o => o.OrderDate);