2012-03-19 69 views
1

我一直在运行ASP.Net MVC C#电影数据库教程,但一直试图做一些小的改变,以帮助了解什么位做什么。我会补充说我是一个初学者。如何更新个人数据库记录ID

我有一个小表单和一个按钮的页面,当我填写表单并单击提交表单中的数据更新数据库表中的预定记录。

在控制器代码中,我该如何指定单个记录?假设表格中只有一条记录,它会随着新信息定期更新?

我想这是值得做的两行代码:

  db.Entry(data).State = EntityState.Modified; 
      db.SaveChanges(); 

我只是不知道如何单独指定的记录,以便得到更新?该记录将有一个ID号码(例如ID将为“1”)。

的码位,将做更新,因为它主张:

// POST: /Data/Update/ 

    [HttpPost] 
    public ActionResult Update(Data data) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Entry(data).State = EntityState.Modified; 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(data); 
    } 
+0

这是行不通的吗? – 2012-03-19 17:41:30

+0

请勿在“C#MVC”等前加前缀。这就是标签的用途。 – 2012-03-19 18:59:33

+0

什么教程? http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application explain详细请完成该教程。 – RickAndMSFT 2012-03-19 19:37:58

回答

1

EF需要知道在数据库中更新哪一行。 如果“ID”属性未从请求中绑定,则需要在代码中明确设置它:

if (ModelState.IsValid) 
    { 
     data.Id = 1; //EF need to know which row to update in the database. 
     db.Entry(data).State = EntityState.Modified; 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
+0

谢谢德米特里,不幸的是,由于某种原因没有更新记录(没有错误,点击该按钮实际上并没有做任何事情)。在Visual Web Developer中构建项目时也没有错误。如果可以提供帮助,我可以提供在View中使用的代码。 (该数据库被称为“data.sdf”,并在数据库中的表与记录称为“数据” - 对不起,我知道这是不对的,但我仍然在学习......) – Harry 2012-03-20 12:16:38

+0

尝试运行调试器并在“if(ModelState.IsValid)”行设置一个断点来检查代码是否被执行。使用调试器浏览代码,查看实体属性值。他们是否正确? – 2012-03-20 13:29:59

+0

谢谢德米特里,你是对的,它并没有出现代码被执行。我有一个称为“更新”的视图(它位于视图文件夹“数据/更新”),其中包含HTML和表单,并提供一个按钮来提交更改,但该按钮似乎没有任何作用。按钮只是简单的有这样的代码:看起来代码没有被调用...现在我真的迷路了!大声笑 – Harry 2012-03-20 13:54:00

相关问题