《MVC + EF实现增删改查》——操作EF实体详解与删除

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013067402/article/details/50528897

    这篇博客我本来想总结一下用EF删除的使用,但是我还想写一写EF是怎样操作实体的,因为增删改查都是对实体进行操作,操作实体的步骤明白了,其它得都大同小异了。

    EF操作数据库的方法是操作实体,我们将数据库中的表映射到成实体后,我们在VS直接操作实体就可以操作数据库,那EF是怎样操作实体的哪? 下面以查询为例子。

    先写一段查询的代码,查询出来的数据是用一个实体返回的。

Model.BlogArticle modelNew = db.BlogUser.Where(a => a.AId == model.AId).FirstOrDefault();

    一、查询详细步骤如下

    1、查询数据库中的数据;

    2、将查询出来的数据转化成Model(User)对象;

    3、将User对象装入“包装类”对象中;

    4、将Model返回。

    二、图解

   

    三、有了查询的详解过程,删除该登场了,删除操作实体的具体的过程如下。

    1、创建要删除的对象
    2、将对象添加到EF管理容器中
    3、将对象包装类的状态标识为删除状态
    4、更新到数据库

    第一步 将待删除记录的ID传给JS代码

@foreach (BlogArticle a in ViewData["DataList"] as List<BlogArticle>)
    {
        <tr>
            <td>@a.AId</td>
            <td>@a.ATitle</td>
            <td>@a.BlogArticleCate.Name</td>
            <td>@a.Enumeration.e_cname</td>
            <td>@a.AUpdatetime</td>
            <td>
                <a href="javascript:del(@a.AId)">删</a>  //将待删除记录的ID传给JS代码
                <a href="javascript:(@a.AId)">改</a>    //将待修改记录的ID传给JS代码
            </td>
        </tr>
    }

    第二步:用JS获取要删除记录的ID

<script type="text/javascript">
        function del(id) {
            if (confirm("小子,你要删除这条记录???")) {
                window.location = "/home/del/" + id;  //定位到HomeController的Del()方法 这里的id就是传递过来的参数
            }
        }

    </script>

    第三步:在HomeControl中添加删除代码

public ActionResult Del(int id)
        {
            try
            {
                //1、创建要删除的对象
                BlogArticle modelDel = new BlogArticle() { AId = id };
                //2、将对象添加到EF管理容器中
                db.BlogArticles.Attach(modelDel);
                //3、将对象包装类的状态标识为删除状态
                db.BlogArticles.Remove(modelDel);
                //4、更新到数据库
                db.SaveChanges();
                return RedirectToAction("Index", "Home");//重新定向到HomeController的Index()方法,就是重新加载一下数据
            }
            catch (Exception ex)
            {

                return Content("删除失败!!!" + ex.Message);
            }
        }

    小结

    好了,删除完了,查询的步骤是查询到数据,将数据转化为Model对象,将Model装入包装类中,再将Model返回。而删除是先找到将要删除的对象(具体的Model),将Model对象装入包装类对象中,然后更改包装类对象的状态标识符,最后执行操作。这两个过程都用到了将我们待操作的实体放入包装类对象中,我们可已经这个包装类对象看成数据库与用户的桥梁。

没有更多推荐了,返回首页