1

我有一个返回我 FlatSessie 对象列表的表单

在我的编辑视图中,我编辑了一些 FlatSessie,并将它们返回到该 List 对象中的 Post 方法。

在我的数据库中,我有 Sessies,我使用 Automapper 将其映射到 FlatSessie 并返回

现在我无法让 linq 为我更新数据库。

编码:

    [HttpPost]
    public ActionResult Sessies(int id, int? modID, int? projID, string schooljaarparam, List<FlatSessie> sl) {
        if (ModelState.IsValid) {
            foreach (FlatSessie s in sl) { //i run over all FlatSessies which i get
                Models.Sessies ses = Mapper.Map<FlatSessie, Sessies>(s); // i map them to the Sessies object
                List<Sessies> origReeks = _db.Sessies.Where(p => p.Ses_ID == ses.Ses_ID).ToList(); //i get the original Session by ID. if there is a Session with that ID, if not (the ID will be 0) i do an Insert. if there is i want to do an Update.

                if (origReeks.Count > 0) {
                    //it's an update
                    UpdateModel(origReeks.First(); //doesnt work
                    //_db.Sessies.Attach(ses, origReeks.First()); //doesnt work, gives me an error on used ID...
                    _db.SubmitChanges();
                } else {
                    //no sessies yet, add them, this works.
                    _db.Sessies.InsertOnSubmit(ses);
                    _db.SubmitChanges();
                }
            }
            TempData["okmsg"] = "De sessies zijn opgeslagen";
            return RedirectToAction("Index");
        }

        //if not valid, i return the viewdata which i need.

        Module m = _db.Modules.First(md => md.Mod_ID == modID.Value);
        int antses = m.Mod_AantalSessies.Value;

        List<List<SelectListItem>> lpllst = new List<List<SelectListItem>>(antses);


        for (int i = 0; i < antses; i++) {
            lpllst.Add(MvcApplication.lesplaatsList(schooljaarparam, -1));
        }

        ViewData["lesplist"] = lpllst;
        ViewData["lglist"] = MvcApplication.lesgeverList();

        return View(sl);
    }
4

1 回答 1

1

它可能会为 UpdateModel (提供前缀FlatSessie[n],其中 n 与相关模型元素的实际输入名称匹配) 以便它知道要映射到对象上的属性,但是因为您正在获取这些属性的列表它可能不会。FlatSessie您是否尝试过直接使用匹配对象中的数据更新检索到的模型?

此外,一旦你让它工作,你可能想要对所有插入/更新(在循环外)执行一次 SubmitChanges,以便将整个提交包装在一个事务中。如果有错误更正并重新提交,这将更容易——因为您不会有一些已经提交的更改导致进一步的潜在错误。

于 2010-03-16T15:37:01.413 回答