【发布时间】:2017-06-14 21:08:53
【问题描述】:
我正在尝试更新我的 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");
}
返回的错误是Sequence contains no elements
已编辑
通过执行以下操作,我能够解决此特定问题。购物车中结帐按钮上的操作链接:
@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);
但是,因为这只会更新第一条记录而不是全部,所以我无法将其标记为答案,但想将其标记为进度,因为它确实解决了我提出的问题......有点
【问题讨论】:
-
OrderNum 是订单的ID吧?
-
它告诉您 LINQ 查询不返回任何元素,并且您希望它具有“精确的一个”。你需要调试它,你做错了什么,错误的输入值,错误的查询(该字段可能没有按照你的预期设置),数据库未初始化或连接错误等。
-
mynum是有效的订单号? -
@Shyju 是的!
-
OrderNum是表的主键吗?
标签: c# asp.net-mvc linq