【问题标题】:How to save data in multiple tables using Entity Framework?如何使用实体框架将数据保存在多个表中?
【发布时间】:2017-03-21 18:18:37
【问题描述】:

如果选中复选框,如何将混合数据保存在多个表中:

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

这是控制器中的代码,我需要混合来自两个表单的数据,并保存到两个表,我需要这样的东西,现在我的问题只是在实现的else部分。

我申请了公交票系统,如果选中返回方式复选框,我需要这个添加:rID(与第一个表tbl_rezervacii相关),返回日期和返回关系,包括相同代理id、价格等数据保存在第一个tbl_rezervacii表中。

修改后的控制器代码:

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

如何从第二个表格中取出数据并一起保存在第二个表格中?

【问题讨论】:

    标签: asp.net-mvc entity-framework asp.net-mvc-4 controller


    【解决方案1】:

    那么,如果选中复选框,您想将数据保存到两个表中并在第二个表中使用第一个表的主键 (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();
    

    【讨论】:

    • 谢谢。这对我有帮助,并且是正确的答案。
    • 只是我需要在第二个表 tbl_povratni 中添加 Datum2,这与第一个表上的 Datum 不同。像 Datum2 = tbl_povratni.Datum2。我试试这个,但不去。怎么做?
    • 什么是 Datum2 值?
    • 如果是ckkoiced返回方式,则Datum2值是第二个数据,如果关系只是一种方式,则必须将日期保存在第二个表中。 Datum2是隐藏形式。
    • 我修改了问题,如果你愿意帮助我?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多