06节-使用EF修改一条记录
修改博客的个人信息:
@if (m != null)
{
<p>当前登录账号:@m.Name</p>
<p><a href="/account/info">修改个人信息</a></p>
}
else
{
<a href="/account/login">登录</a>
<a href="/account/regist">注册</a>
}
在info的视图中,我们实现修改手机号码字段:
<h2>修改个人信息</h2>
<form action="Info" method="post">
<p>
<span>手机号:</span>
<span>@Html.EditorFor(m=>m.Phone)</span>
</p>
<input type="submit" value="提交" />
</form>
如果是直接查找数据库得到的实体,应该不用将实体附加到上下文中,等会我们来做个试验:
/// <summary>
/// 修改个人信息打开action
/// </summary>
/// <returns></returns>
public ActionResult Info()
{
return View();
}
[HttpPost]
public ActionResult Info(Account viewModel)
{
Account currentLoginAccount = Session["currentaccount"] as WebApplicationCF01.Models.Account;
if (currentLoginAccount == null)
{
return RedirectToAction("Login");//发现没有登录 则直接跳转到登录的页面
}
var model = context.account.Where(m => m.Name == currentLoginAccount.Name).FirstOrDefault();
if (model == null)
{
return Content("当前登录账号不存在,请联系管理员。");
}
model.Phone = viewModel.Phone;
//使用EF进行修改
//先将要修改的实体附加到上下文中 因为上面是直接查找数据库得到model的 所以不用附加也可以
//context.account.Attach(model);
//修改实体的状态 改为"修改"状态
//context.Entry<Account>(model).State = System.Data.Entity.EntityState.Modified;
//执行更新到数据库
context.SaveChanges();
return RedirectToAction("Index", "Home");
}
Previous: 05节-使用codefirst实现数据库的查找
Next: 07节-修改记录的时候,使用附加的方式