2016-06-01 16 views
1

mvc .netでデータベースアプリケーションを作成していますが、SQL Serverデータベースにはテーブル名があります。フィールドid、layout_id、seat_no、seat_id、bookedがあります。次のようにコントローラのアクションmvc.netのsqlserverデータベースを更新するには

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

内側次quesyを持つデータベースが私のコントローラのアクションがあるが、私は、ストアドプロシージャを使用せずにデータベースを更新することができ、私はデータベース

[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

私は、if節内SeatPlansオブジェクトの初期化を置くことをお勧めします。 – avidProgrammer

答えて

1

まず、エンティティフレームワークのdocumentationを読んでみたいと思っています。あなたが必要とするものすべてを手に入れることができます。

しかし、あなたが最初のエントリを取得したいと思いデータベースエントリを更新するために、あなたの質問に答えるために:主キーに検索するときに、あなたが欠けているとき、検索を使用して

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

のみ、動作します他のフィールドを検索するには上記のようにLinqを使う必要があります。

その後更新それは:

OldInsObj.booked = 1; 

最後に、データベースに作業を保存することができます

db.SaveChanges(); 
+1

EntityFramework.dllで例外タイプSystem.ArgementExceptionが発生しましたが、-var OldInsObj = db.SEATPLAN.Find(seat_id、layout_id)のユーザーコードで処理されませんでした。 – rakshi

+1

@rakshiコードを更新しましたが、主キーを検索していないことはわかりませんでした。あなたはLinqを.Find()の代わりに使用する必要があります – Mo09890

+0

先生はここでLinqをどのように使うことができるか教えてください – rakshi

関連する問題