Я только сейчас начинаю работать с LINQ и довольно хорошо знаком с MVC.У меня строго типизированное представление, которое обновляет запись.Я успешно сделал создание:
Это прекрасно работает, и создает запись в базе данных:
public ActionResult Create(TABLEMODEL tableModel)
{
DBDataContext db = new DBDataContext();
if (ModelState.IsValid)
{
db.TABLEMODEL.InsertOnSubmit(tableModel);
db.SubmitChanges();
}
}
Но при попытке обновления:
public ActionResult Manage(TABLEMODEL tableModel)
{
DBDataContext db = new DBDataContext();
if (ModelState.IsValid)
{
db.SubmitChanges();
}
}
Этотерпит неудачу, в том смысле, что он не обновляет запись в базе данных.Никакой фактической ошибки / исключения не происходит, и я могу просто пройти через это.
Я уверен, что что-то упустил, но не могу найти что.Я ценю любую помощь в этом вопросе.
ОБНОВЛЕНИЕ
Я заметил, что если я получу запись с использованием DataContext:
DBDataContext db = new DBDataContext();
var m = db.TABLEMODELs.Single(m => m.ID == 1);
m.Name = "UpdatedName";
db.SubmitChanges();
Это обновит,поэтому я предполагаю, что я как-то не привязываю свою модель к контексту LINQ.
Мое решение
Я обнаружил, что вам нужно получить объект, а затем обновить его с помощью формы.Достаточно просто.
[HttpPost]
public ActionResult Manage(int ID, FormCollection form)
{
DBSDataContext db = new DBSDataContext();
var t= db.TABLEMODELs.Single(b => b.ID == ID);
UpdateModel(t);
if (ModelState.IsValid)
{
db.SubmitChanges();
}
return View(t);
}