我正在尝试更新Orders表中的记录,其中查询字符串等于客户订单或表中的OrderNum
。这就是我的尝试:
public ActionResult Checkout(Order order)
{
string newNum = Request.Params["unum"];
int mynum = 0;
bool res = int.TryParse(newNum, out mynum);
//order = db.Orders.Single(o => mynum == o.OrderNum); - tried this first
order = db.Orders.Single(o => o.OrderNum == mynum);
order.RecievedShirt = false;
order.OrderCompleted = true;
db.SaveChanges();
var AuthenticationManager = HttpContext.GetOwinContext().Authentication;
AuthenticationManager.SignOut();
return RedirectToAction("Purchased","Orders");
}
返回的错误是序列不包含任何元素
被修改
我可以通过执行以下操作来解决此特定问题。购物车中结帐按钮上的操作链接:
@Html.ActionLink("Checkout", "Checkout", new { unum = ViewBag.Data}, htmlAttributes: new { @class = "checkout-btn" })
然后我对行动进行了以下更新:
public ActionResult Checkout(Order order, int ? unum)
然后我改变了linq来反映:
order = db.Orders.FirstOrDefault(o => unum == o.OrderNum);
但是,因为这只更新了第一条记录而不是全部我无法将其标记为答案,但是希望将其标记为进度,因为它确实解决了我问的问题......有点
答案 0 :(得分:1)
可能你做错了,订单没有保存在数据库中。
Sequence contains no elements
表示您的查询没有返回任何内容,因此请先检查它是否正确插入(使用SQL Server数据资源管理器是一种简单的方法)。
此外,由于OrderNum
是表格中的主键,请尝试使用Find(key)(也比Single
更快),如下所示:
order = db.Orders.Find(mynum);