EF增删改查的优化

       在EF的上一篇博客中已经对它的增删改查有了一个简单的了解,其中的修改过程是先要把要修改的内容查出来然后再进行修改、保存。它具体的过程是这样的

       首先当在执行查询语句的时候“EF数据上下文”会先访问数据库进行查询,然后将结果以对象的方式返回到“EF数据上下文中”,EF数据上下文相当于是一个容器,在对象进入到容器中的时候在对象的外侧会再进行包装如上图所示,这样返回的对象会以“EF包装类对象”存在。同时这个对象会有一个标识,其中的每个属性也都有一个标识,当对其属性进行修改的时候属性标识就会改变,在数据库中就是根据这些标识生成对应的SQL语句的。

       但是这样比较麻烦,每次修改前都需要先进行查询,根据以上的原来可以改进出另外一种方法。

#region修改改进,不需要先进行查询 Edit1()
       ///<summary>
       ///修改改进
       /// </summary>
       public void Edit()
       {
           //1、实例化要修改的对象,注意这里属性的值是目标值即修改完以后的值
           T_Book book = new T_Book() {bookID="1",bookName="红楼梦" };
           //2、将对象加入到EF容器中
           DbEntityEntry<T_Book> entry = db.Entry<T_Book>(book);
           //3、将整个对象标识为没有修改过
           entry.State = System.Data.EntityState.Unchanged;
           //4、对要修改的属性的标识进行修改,这是的对象的标识也会改变
           entry.Property("bookName").IsModified = true;
           //5、保存
           db.SaveChanges();
 
           //在进行SaveChanges()的时候,会根据对象的状态、对象中属性的状态生成SQL语句
 
       }
       #endregion

       同样的原理这种方法可以再增、删中用。

小结

       EF是第一次接触,很多东西陌生但是又熟悉,它还是对数据库的增删改查只是操作方法是建立在面向对象的基础上的。自己看的视频中有很多原理老师讲的也比较容易懂得,关于这样原理自己觉得研究是有必要的因为结合最近学习和使用AJAX的情况懂得原理了操作起来更容易,而且灵活一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
EFEntity Framework)是.NET Framework中的一种ORM(Object Relational Mapping)框架,可以用来简化数据库操作。下面是使用EF Web API进行增删改查的示例代码: 1. 增加数据: ```csharp [HttpPost] public async Task<IActionResult> AddData([FromBody] Data data) { if (!ModelState.IsValid) { return BadRequest(ModelState); } _context.Data.Add(data); await _context.SaveChangesAsync(); return CreatedAtAction(nameof(GetData), new { id = data.Id }, data); } ``` 2. 删除数据: ```csharp [HttpDelete("{id}")] public async Task<IActionResult> DeleteData(int id) { var data = await _context.Data.FindAsync(id); if (data == null) { return NotFound(); } _context.Data.Remove(data); await _context.SaveChangesAsync(); return NoContent(); } ``` 3. 修改数据: ```csharp [HttpPut("{id}")] public async Task<IActionResult> UpdateData(int id, [FromBody] Data data) { if (id != data.Id) { return BadRequest(); } _context.Entry(data).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!_context.Data.Any(e => e.Id == id)) { return NotFound(); } else { throw; } } return NoContent(); } ``` 4. 查询数据: ```csharp [HttpGet("{id}")] public async Task<ActionResult<Data>> GetData(int id) { var data = await _context.Data.FindAsync(id); if (data == null) { return NotFound(); } return data; } ``` 以上是EF Web API进行增删改查的示例代码,需要注意的是,这只是示例代码,具体实现还需要根据具体的业务逻辑进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值