вот мой вопрос: у меня есть приложение MVC3 C #, и мне нужно обновить значение в DbSet из контроллера Edit, чтобы значение элемента 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);
}
}
EDIT: вышеуказанный контроллер предназначен для сущности Item, которая при действии Create создает экземпляры сущности 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 и строковое значение.
Qrs - упомянутый DbSet из контекста. Это выглядит так:
public DbSet<Qr> Qrs { get; set; }
Любая помощь будет оценена.