Csharp/C#教程:从控制器更新DbSet 项的值 – C#,MVC,Code First分享


从控制器更新DbSet 项的值 – C#,MVC,Code First

这是我的问题:我有一个MVC3 C#应用程序,我需要从编辑控制器更新DbSet中的值,因此T项的值将被替换为新值。 我不想删除该项目并再次添加。 我无法弄清楚如何做到这一点。 DbSet似乎没有像索引那样的东西。

这是我的编辑控制器:

public class ItemController : Controller { private SESOContext db = new SESOContext(); private FindQrs fqr = new FindQrs(); [HttpPost] public ActionResult Edit(Item item) { if (ModelState.IsValid) { db.Entry(item).State = EntityState.Modified; Qr qr = fqr.FindQr(item.QR); // update somewhere here db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.SetID = new SelectList(db.Sets, "SetID", "Name", item.SetID); return View(item); } } 

编辑:上述控制器用于Item实体,在Create操作中创建Qr实体的实例。 我只是想在Edit操作中添加一些东西,它将使用视图中的值更新Qr实体的Value字段(Qr的Value字段应该是唯一的)。

FindQrs方法看起来像这样:

  public class FindQrs { private SESOContext db = new SESOContext(); public Qr FindQr(string qr) { List qrList = db.Qrs.ToList(); Qr foundQr = qrList.Find(delegate(Qr qrDel) { return qrDel.Value == qr; }); return foundQr; } } 

Qr是一个只包含ID和字符串Value字段的类。 Qrs是上下文中提到的DbSet。 它看起来像这样:

  public DbSet Qrs { get; set; } 

任何帮助将不胜感激。

您可能正在更新不同DbContext中的值。 试试这个:

上述就是C#学习教程:从控制器更新DbSet 项的值 – C#,MVC,Code First分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)

  [HttpPost] public ActionResult Edit(Item item) { if (ModelState.IsValid) { db.Entry(item).State = EntityState.Modified; Qr qr = fqr.FindQr(item.QR, db); // update somewhere here db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.SetID = new SelectList(db.Sets, "SetID", "Name", item.SetID); return View(item); } public class FindQrs { public Qr FindQr(string qr, SESOContext db) // pass in the db context { List qrList = db.Qrs.ToList(); Qr foundQr = qrList.Find(delegate(Qr qrDel) { return qrDel.Value == qr; }); return foundQr; } } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/cdevelopment/951645.html

(0)
上一篇 2021年11月18日
下一篇 2021年11月18日

精彩推荐