2017-03-21 30 views
0

如何,如果被選中的複選框保存在多個表中數據好壞參半:如何使用實體框架將數據保存在多個表中?

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create([Bind(Include = "rID,AgentID,karta_br,Datum,patnikID,stanicaOD,stanicaDO,cena,povratna")] tbl_rezervacii tbl_rezervacii) 
{ 
    if (ModelState.IsValid) 
    { 
     if (tbl_rezervacii.povratna != true) 
     { 
      db.tbl_rezervacii.Add(tbl_rezervacii); 
      db.SaveChanges(); 
     } 
     else 
     { 
       tbl_rezervacii rezervacii = new tbl_rezervacii() 
      { 
       ??????????????????????? 
      }; 

      db.tbl_rezervacii.Add(rezervacii); 
      db.SaveChanges(); 

      tbl_povratni povratni = new tbl_povratni() 
      { 
       ??????????????????????? 

      }; 
      db.tbl_povratni.Add(povratni); 
      db.SaveChanges(); 
     } 

這是在控制器代碼,我需要將數據從兩種形式的混合,並保存到兩個表,我需要的是這樣的,現在我的問題只是在其他部分的實施。

我提出申請的公交票務系統,我需要這個,如果被選中的回報方式複選框,添加:擺脫(與第一臺tbl_rezervacii有關),返回和返回的關係之日起,包括相同的代理ID,價格等數據保存在第一張表tbl_rezervacii中。

修改的控制器CODE:

public ActionResult Create([Bind(Include = "rID,AgentID,karta_br,Datum,patnikID,stanicaOD,stanicaDO,cena,povratna")] tbl_rezervacii tbl_rezervacii) 
    { 

     if (ModelState.IsValid) 
     { 
      if (tbl_rezervacii.povratna != true) 
      { 

       db.tbl_rezervacii.Add(tbl_rezervacii); 

       db.SaveChanges(); 
      } 
      else 
      { 

       tbl_rezervacii rezervacii = new tbl_rezervacii() 
       { 

        AgentID = tbl_rezervacii.AgentID, 
        karta_br = tbl_rezervacii.karta_br, 
        Datum = tbl_rezervacii.Datum, 
        patnikID = tbl_rezervacii.patnikID, 
        stanicaOD = tbl_rezervacii.stanicaOD, 
        stanicaDO = tbl_rezervacii.stanicaDO, 
        cena = tbl_rezervacii.cena, 
        povratna = tbl_rezervacii.povratna 
        }; 

       db.tbl_rezervacii.Add(rezervacii); 
       //db.SaveChanges(); 
       var rows = db.SaveChanges(); 

       tbl_povratni povratna = new tbl_povratni() 
       { 
        rezID = rezervacii.rID, 
        AgentID = rezervacii.AgentID, 
        karta_br = rezervacii.karta_br, 
        DatumP = **tbl_povratni.DatumP**, 
        patnikID = rezervacii.patnikID, 
        stanicaPOD = **tbl_povratni.stanicaPOD**, 
        stanicaPDO = **tbl_povratni.stanicaPDO**, 
       }; 
       db.tbl_povratni.Add(povratna); 
       db.SaveChanges(); 
      } 

      ViewBag.AgentID = new SelectList(db.tbl_agenti, "aID", "agent_ime", tbl_rezervacii.AgentID); 
      ViewBag.patnikID = new SelectList(db.tbl_patnici, "pID", "ime", tbl_rezervacii.patnikID); 
      ViewBag.stanicaOD = new SelectList(db.tbl_stanici, "sID", "stanica", tbl_rezervacii.stanicaOD); 
      ViewBag.stanicaDO = new SelectList(db.tbl_stanici, "sID", "stanica", tbl_rezervacii.stanicaDO); 
      ViewBag.stanicaPOD = new SelectList(db.tbl_stanici, "sID", "stanica", tbl_rezervacii.tbl_povratni.stanicaPOD); 
      ViewBag.stanicaPDO = new SelectList(db.tbl_stanici, "sID", "stanica", tbl_rezervacii.tbl_povratni.stanicaPDO); 

      return View(tbl_rezervacii); 
     } 
     return RedirectToAction("Index"); 
    } 

如何從次級形式採取數據和一起保存在第二表?

回答

0

因此,如果複選框被選中,您希望將數據保存到兩個表中,並在第二個表中使用第一個表(rID)的主鍵?如果rID是自動遞增的,它將由EF用數據庫分配的值更新。

 tbl_rezervacii rezervacii = new tbl_rezervacii() 
     { 
      AgentID = tbl_rezervacii.AgendID, 
      karta_br = tbl_rezervacii.karta_br 
      // and so on... 
     }; 

     db.tbl_rezervacii.Add(rezervacii); 
     var rows = db.SaveChanges(); // optional, rows will be > 0 if saved successfully. 

     tbl_povratni povratni = new tbl_povratni() 
     { 
      // if rID is auto increment 
      rID = rezervacii.rID, 
      // and so on...     
     }; 
     db.tbl_povratni.Add(povratni); 
     db.SaveChanges(); 
+0

謝謝。這對我有幫助,並且答案正確。 – Xelmep

+0

只需要在第二個tabel tbl_povratni中添加Datum2,這是第一張表上的Datum不同。如** Datum2 = tbl_povratni.Datum2 **。我嘗試這個,但不去。怎麼做? – Xelmep

+0

什麼是Datum2值? – Ahmed

相關問題