Ich versuche Datensätze in meiner Orders-Tabelle zu aktualisieren, wobei die Abfragezeichenfolge der Kundenbestellung oder OrderNum
in der Tabelle entspricht. Dies ist, was ich versucht habe:Wie aktualisiere ich bestimmte Datensätze mithilfe eines Vergleichs mit linq?
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");
}
Der Fehler, der zurückgegeben wird Sequenz enthält keine Elemente
Herausgegeben
konnte ich dieses spezielle Problem beheben, indem Sie folgendermaßen vorgehen. Action-Link auf der Checkout-Schaltfläche im Warenkorb:
@Html.ActionLink("Checkout", "Checkout", new { unum = ViewBag.Data}, htmlAttributes: new { @class = "checkout-btn" })
Dann habe ich die folgenden Aktualisierungen der Aktion:
public ActionResult Checkout(Order order, int ? unum)
Dann änderte ich die Linq zu reflektieren:
order = db.Orders.FirstOrDefault(o => unum == o.OrderNum);
Da jedoch dies aktualisiert nur den ersten Datensatz anstelle von allem, was ich nicht als die Antwort markieren kann, aber wollte es als Fortschritt markieren, da es die Frage gelöst hat, die ich gestellt habe ... etwas
OrderNum ist die ID der Bestellung richtig? – GeorgeChond
es teilt Ihnen mit, dass LINQ-Abfrage keine Elemente zurückgibt, und Sie erwarten, dass es "genau eins" hat. Sie müssen es debuggen, Sie tun etwas falsch, falscher Eingabewert, falsche Abfrage (dieses Feld kann nicht so eingestellt werden, wie Sie es erwarten), db nicht initialisiert oder falsche Verbindung usw. – NSGaga
'mynum' ist eine gültige Bestellung Nummer ? – Shyju