正在更新数据库集<;T>;项目';s值-C#,MVC,Code First
本文关键字:First -C# Code MVC gt 数据库 更新 lt 项目 | 更新日期: 2023-09-27 18:28:18
我的问题是:我有一个MVC3 C#应用程序,我需要从Edit控制器更新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实体,该实体在创建操作时创建Qr实体的实例。我只想添加一些东西,在编辑操作时,它将用视图中的值更新Qr实体的值字段(Qr的值字段应该是唯一的)。
FindQrs方法如下所示:
public class FindQrs
{
private SESOContext db = new SESOContext();
public Qr FindQr(string qr)
{
List<Qr> qrList = db.Qrs.ToList<Qr>();
Qr foundQr = qrList.Find(delegate(Qr qrDel) { return qrDel.Value == qr; });
return foundQr;
}
}
Qr是一个只包含ID和字符串Value字段的类。Qrs是上下文中提到的DbSet。它看起来像这样:
public DbSet<Qr> Qrs { get; set; }
任何帮助都将不胜感激。
您可能正在更新不同DbContext中的值。试试这个:
[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<Qr> qrList = db.Qrs.ToList<Qr>();
Qr foundQr = qrList.Find(delegate(Qr qrDel) { return qrDel.Value == qr; });
return foundQr;
}
}