08节-使用EF删除记录

第一种是查找删除,就是通过一些条件把记录实体查找出来,然后通过上下文直接删除。

我们添加一个admin的区域,添加一个account控制器用来后台管理会员。列出来所有的会员,然后添加一个删除的按钮。

后台会员管理action和视图:

csharpcsharppublic class AccountController : Controller
{
    CfContext context = new CfContext();

    // GET: Admin/Account
    public ActionResult Manage()
    {
        var list1 = context.account.Where(m => m.ID < 100).ToList();
        return View(list1);
    }
}

下面是视图:

csharpcsharp@model List<WebApplicationCF01.Models.Account> 

@{
    ViewBag.Title = "Manage";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>会员管理</h2>

<p>所有会员</p>
@foreach (var item in Model)
{
    @item.Name <a href="delete/@item.ID">[删除]</a><br />
}

管理控制器哪里加入这个Delete的action:

csharpcsharppublic ActionResult Delete(int Id)
{
    //使用这个查找删除方式
    var model = context.account.Where(m => m.ID == Id).SingleOrDefault();
    if (model != null)
    {
        //将当前查找出来的实体的状态设为Deleted
        context.Entry<Account>(model).State = System.Data.Entity.EntityState.Deleted;
        context.SaveChanges();
    }
    return RedirectToAction("Manage");
}

直接不查找,直接附加的这种方式:

csharpcsharp//使用附加的方式删除
var model = new Account { ID = Id };
context.Set<Account>().Attach(model);
context.Entry<Account>(model).State = System.Data.Entity.EntityState.Deleted;
context.SaveChanges();
return RedirectToAction("Manage");

这种方式也是可以的,并且new的时候只是单单new ID主键就可以了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注