我刚刚开始使用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);
}