2016-06-01 8 views
1

ich erstelle eine Datenbankanwendung in mvc .net mit sql server database.i habe einen Tabellennamen seatplans mit Feldern id, layout_id, seat_no, seat_id, gebucht ich möchte den aktualisieren Datenbank mit dem folgende quesy innerhalb der Controller-AktionWie aktualisiert man die sqlserver Datenbank in mvc.net

update seatplanes set booked=1 where seatid=seat_id and layoutid=layout_id 

meine Controller-Aktion ist wie folgt, aber ich bin nicht in der Lage, die Datenbank zu aktualisieren

[HttpPost] 
    public ActionResult Seatbook(String seat_id, String seat_no, int layout_id) 
    { 
     // int id = 10; 
     SeatPlans S = new SeatPlans(); 
     S.seat_id = seat_id; 
     S.seat_no = seat_no; 
     S.layout_id = layout_id; 
     S.booked = 1; 
     if (ModelState.IsValid) 
     { 
      var OldInsObj = db.SEATPLAN.Find(seat_id,layout_id); 
      S.Id = OldInsObj.Id; 
      //var OldInsObj = db.SEATPLAN.Find(d=>d.seat_id==seat_id , d=>d.layout_id==layout_id).ToList(); 
      db.Entry(S).State = EntityState.Modified; 
      db.SaveChanges(); 
      // return RedirectToAction("Index"); 
     } 


     return View("Index"); 
    } 

kann ich die Datenbank aktualisieren, ohne dass die gespeicherte Prozedur.

+0

Ich schlage vor, die Initialisierung der SeatPlans setzen Objekt innerhalb des if-Klausel. – avidProgrammer

Antwort

1

Zuerst denke ich, dass Sie eine Lektüre des documentation für Entity Framework haben möchten, es wird Sie mit allem, was Sie brauchen, gehen.

jedoch Ihre Frage zu beantworten, um einen Datenbankeintrag bearbeiten Sie zuerst den Eintrag erhalten wollen würde zu:

var OldInsObj = db.SEATPLAN.Where(s => s.seat_id == seat_id 
    && s.layout_id == layout_id).FirstOrDefault(); 

FIND wird nur funktionieren, wenn sie auf dem Primärschlüssel suchen, wenn Sie wollen, sind Um nach anderen Feldern zu suchen, müssen Sie Linq wie oben gezeigt verwenden.

Dann Update es:

OldInsObj.booked = 1; 

Schließlich können Sie Ihre Arbeit in der Datenbank speichern:

db.SaveChanges(); 
+1

Ich erhalte den Ausnahmetyp System.ArgumentException in EntityFramework.dll, aber wurde nicht im Benutzercode at - var OldInsObj = db.SEATPLAN.Find (seat_id, layout_id) behandelt; – rakshi

+1

@rakshi Ich habe den Code aktualisiert, ich wusste nicht, dass Sie nicht auf dem Primärschlüssel suchen. Sie müssen Linq anstelle von .Find verwenden() – Mo09890

+0

Sir können Sie mir bitte sagen, wie kann ich Linq hier verwenden – rakshi

Verwandte Themen