zoukankan      html  css  js  c++  java
  • MVC + EF 框架 对数据库做增删改查

    这几天一直在看MVC 开发模式,其中借助EF框架对数据库进行 增删改查操作 现在就小小的总结一下吧 

    在使用EF操作数据库时,会首先添加 ADO.NET数据模型,这时,会为我们添加一个数据上下文类,使用这个类的对象可以对数据库做任何操作。所以在使用EF操作数据库之前 需要创建数据上下文对象。

    MyDatabaseEntities mde = new MyDatabaseEntities();

    1.使用EF 对数据库 做增加操作 

     1.1 创建一个需要被操作数据表的对象(一般来说 ,一张表就是一个实体,也就是一个类),以tblPerson 表为例(int id,string name ,string sex,Nullable<int> age)其中age 不能为空 id 为主键,自动增长类型:

        tblPerson personAdd=new tblPerson ();

        personAdd.name ="lss";

        personAdd.sex="男";

        personAdd.age=23;(补充说明:由于tblPerson 表中规定了 age 不能为空,所以必须给它赋值,这个在之后的修改 删除操作中会体现)

        //在这里 注明一下 ,由于ID是自动增长型,所以添加的时候不需要给id赋值。

     1.2 告诉EF上下文 要 对 数据库 进行 增加操作

        mde.tblPerson .Add(personAdd);

     1.3 将实体的变化保存到数据库

           mde.SaveChanges()

    2. 使用EF 对数据库 做删除操作

     2.1 同理 创建一个 tblPerson 对象

          tblPerson personDelete =new tblPerson ();

          // 在进行删除和修改操作时,一定要指明主键ID(在这里是ID,就是一个表的主键,在使用EF对表进行操作时,这个表一定需要指定主键

       // 假如我们使用 EF删除 id为2那条记录 

        personDelete.id=2;

      // 由于age 是非空的 ,所以需要 给 age 赋值  随便就可以

            personDelete.age=23;

    2.2.1 Method1  将 personDelete 对象加载到EF 实体容器中

            mde.tblPerson.Attach(tblPersonDelete);

    2.2.2 告诉上下文将要 进行 删除 操作

              mde.tblPerson.Remove(tblPersonDelete); 

    2.2.3 将所做的删除操作保存到数据库

       mde.SaveChanges();

         //到这里 删除操作 做完了,下面介绍第二种方法


    2.2.1 Method2 将personDelete 对象加载到EF 实体容器中 并且 获取 返回 的 实体对象

         DbEntityEntry<tblPerson> entryDelete =  mde.Entry<tblPerson>(tblPersonDelete);

    2.2.2   将实体对象 在EF 容器中的 状态修改为 delete

        entryDelete.State=System.Data.EntityState.Deleted

    2.2.3  将删除后的 实体 对象保存

       mde.SaveChanges();

    3. 使用EF 对数据库 做 修改操作

     3.1  创建 tblPerson 对象

          tblPerson tblPersonModify=new tblPerson ();

          //  在进行 修改操作时 需要指定id  假设我们修改 id为3 的那一条数据

          tblPersonModify.id=3;

         //指明要修改的 那一列  假如 将 id  为 3 的数据的 name改为 yzk

         tblPersonModify.name="yzk";

         //在这里  同时需要 给 age  赋值

         tblPersonModify.age=34;

     3.2 将tblPersonModify 对象加载到EF 框架 ,并且 获取 返回的 实体对象

          DnEntityEntry<tblPerson> entryModify=mde.Entry<tblPerson>(tblPersonModify);

    3.3 将tblPersonModify 实体 对象 在EF框架中的存储状态 修改为 未修改

         entryModify.State=System.Data.EntityState.UnChanged;

    3.4 将tblPersonModify 对象中  需要 修改的 属性 在EF中框架 的实体状态 IsModified 修改为true ,表示 这个 属性需要 EF 来修改

         entryModify.Property(d=>d.name).IsModified=true;

    3.5 告诉上下文  将修改的 实体 对象 保存到 数据库

        mde.SaveChanges(); 

    4. 使用EF 对数据库 进行  查询操作 (SQO 和 linq)

    4.1 使用SQO 对数据库 进行查询

    4.1.1 在这里 产生 了 延迟加载 ,通过数据库 里面的 工具可以知道 这一步并没有 去数据库 查询 , 只是将sql查询 语言 保存了

           DbQuery<tblPerson> dbQuery= mde.tblPerson.Where(d=>d.name like "%l%")as DbQuery<tblPerson>;

    4.1.2 当我们使用 ToList() 方法时,这样 才从 数据库 查询除了 数据 

          List<tblPerson> list=dbQuery.ToList();

    4.2 使用LINQ语句 对数据库 进行 查询 

           (from d in mde.tblPerson where d.name like "%l%" select d)

        上面一段代码 返回类型 是IQueryable<tblPerson> 泛型集合

       和上面的一样 ,使用的 时候  需要调用ToList()方法 将他转化成 list集合 

      到这里  ,使用EF 对数据库 进行 查询,修改,添加,删除 操作已经 写完了  ,希望各位 多多指教  一起进步 !!!~~~~ 

      

  • 相关阅读:
    scrapy+Lucene搭建小型搜索引擎
    普通程序员如何转向AI方向
    python:单引号,双引号和三引号
    【推荐】你必须知道的EF知识和经验
    Quartz.NET 入门
    论如何学习一门编程语言
    Android解析ActivityManagerService(一)AMS启动流程和AMS家族
    python的数据可视化库 matplotlib 和 pyecharts
    pythonWeb -- Django开发- Admin
    Android内存优化(四)解析Memory Monitor、Allocation Tracker和Heap Dump
  • 原文地址:https://www.cnblogs.com/Susan-Liu/p/5039724.html
Copyright © 2011-2022 走看看