2016-06-01 2 views
1

Я создаю приложение базы данных в mvc .net с sql server database.i имеют табличное имя sitplans с идентификаторами полей, layout_id, seat_no, seat_id, забронировано Я хочу обновить базы данных с помощью следующей quesy внутри действия контроллераКак обновить базу данных sqlserver в mvc.net

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

мои действия контроллера заключается в следующем, но я не в состоянии обновить базу данных

[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"); 
    } 

можно обновить базу данных без использования хранимой процедуры.

+0

Я предлагаю положить инициализацию SeatPlans объекта в if-предложении. – avidProgrammer

ответ

1

Во-первых, я думаю, что вы хотите прочитать documentation для Entity Framework, это поможет вам со всем, что вам нужно.

Однако, чтобы ответить на ваш вопрос, чтобы обновить запись базы данных, вы хотите, чтобы сначала получить запись:

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

Использования находки будет работать только при поиске по первичному ключу, когда вы хотели для поиска по другим полям вам нужно будет использовать Linq, как показано выше.

Затем обновление это:

OldInsObj.booked = 1; 

Наконец, вы можете сохранить свою работу в базу данных:

db.SaveChanges(); 
+1

Я получаю исключение типа System.ArguementException, обнаруженного в EntityFramework.dll, но не обрабатывается в коде пользователя при - var OldInsObj = db.SEATPLAN.Find (seat_id, layout_id); – rakshi

+1

@rakshi Я обновил код, я не понял, что вы не искали первичный ключ. Вам нужно будет использовать Linq вместо .Find() – Mo09890

+0

сэр может у вас рассказать мне, как я могу использовать Linq здесь – rakshi