tnblog
首页
视频
资源
登录

EF删除与批量删除。Entity Framework删除与批量删除

8899人阅读 2020/5/13 22:59 总访问:891353 评论:0 收藏:0 手机
分类: ORM

EF删除

方法1:直接执行数据库

  1. int count = oapEntities.Database.ExecuteSqlCommand("delete from users where id=@userid", new SqlParameter("userid", userId));

需要自己去写sql语句

方法2:先查询数据库在删除

1:先根据id查询需要删除的对象

  1. Users users = oapEntities.Users.Where(a => a.Id == userId).FirstOrDefault();

2:修改删除的状态

  1. oapEntities.Users.Remove(users);

注意这一步只是修改一个状态而已不会真正的删除

3:执行保存数据库操作,这一步才会把真正的操作反应的数据库

  1. int count = oapEntities.SaveChanges();

方法3:不需要自己写sql语句,而且也不需要查询一次数据库

自己实例化一个直接修改状态就不用去重新查询一次,这样就可以节省效率

  1. Users users = new Users() { Id = userId };
  2. //修改他的状态为删除
  3. oapEntities.Entry(users).State = System.Data.Entity.EntityState.Deleted;

tip:当然也需要调用SaveChanges进行保存更改到数据库

三种方法的效率对比

理论上来说:第一章最快,然后是第三种,第二种最慢
第二种最慢:是相比其他两种他不仅需要删除,而且督多了一个查询数据库的步骤
第三种理论上比第一种慢的原因:是因为第三种他多了生成sql语句的过程,第一种sql语句是直接写出来的

批量删除

注意批量删除尽量避免循环操作数据库

第一步:获取需要删除的id

  1. //第一步:找到所有需要删除的id
  2. $("#userTable input[type='checkbox']:checked").each(function () {
  3. ids += $(this).val() + ",";
  4. });

第二步:把id传到后台,把这些id的状态都修改成删除

  1. public ActionResult BatchDelete(string userIds)
  2. {
  3. //先实例化ef的上下文对象
  4. oapEntities oapEntities = new oapEntities();
  5. //去掉最后一个逗号
  6. string trimUserIds = userIds.TrimEnd(',');
  7. List<string> userIdList = trimUserIds.Split(',').ToList();
  8. //循环修改id涉及到用户的状态
  9. foreach (string item in userIdList)
  10. {
  11. Users users = new Users() { Id = Convert.ToInt32(item) };
  12. oapEntities.Entry(users).State = System.Data.Entity.EntityState.Deleted;
  13. }
  14. int count = oapEntities.SaveChanges();//保存数据库的方法,返回受影响的行数
  15. return Json(count);
  16. }

第三步:调用saveChanges方法即可
oapEntities.SaveChanges();保存数据库的方法,返回受影响的行数,真正执行数据库操作的地方,

注意不要循环的去执行oapEntities.SaveChanges(),这样他就是循环的执行数据库了

作业:

1:实现删除和批量删除
2:批量删除的时候前台即时删除


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

NET Core 使用 EF Code First

下面这些内容很老了看这篇:https://www.tnblog.net/aojiancc2/article/details/5365 项目使用多层,把数据库访问...

C out、rEF关键字的用法和区别

说说自己对out、ref的认识,面试问到的几率很高哟。out:classProgram { /* *out、ref都是引用传递,传递后使用都会改变...

Net Core使用EF之DB First

一.新建一个.net core的MVC项目新建好项目后,不能像以前一样直接在新建项中添加ef了,需要用命令在添加ef的依赖二.使用Nug...

EF6动态添加条件

例如我们要匹配一个集合中的所有关键字,我们首先想到的做法是这样的publicList&lt;Article&gt;GetArtByKeys(List&lt;strin...

Net Core使用依赖注入来装载EF的上下文对象

妹子情人节快乐~.net core中用了不少的依赖注入,官方文档中也推荐使用。这样使用依赖注入来管理ef对象,还是比较科学,比如...

NET CORE配置EF连接字符串。windows验证的连接字符串配置

在appsettings.json中配置好连接字符串{&quot;ConnectionStrings&quot;:{ &quot;BloggingDatabase&quot;:&quot;Server=(lo...

使用REFit框架访问REST接口

改装是一个类型安全的REST开源库,是一套基于RESTful架构的.NET客户端实现,内部使用HttpClient类封装,可通过改装更加简单...

docker启动报错 No dEFault Boot2Docker ISO found locally downloading the latest

这是因为,启动时如果检测到没有 Boot2Docker,就会去下载,这个下载过程出现网络连接上的错误了,导致启动失败。可以去下...

扩展EF自动映射需要查询的字段(表达式树Expression),动态构建返回值

Entity Framework 动态构造select表达式比如我们需要返回某些字段会采用如下的写法但是发现每次都去写select如果字段很多不...

layer弹窗+EF引入独立页面进行操作

使用layer弹窗进行操作的时候我们可以使用type=2,来把一个独立的页面指向content内容例如我们有一个表格,点击添加后,我...

Entity Framework常用查询,EF joinEF多表联查,原生sql。EF 多表查询。AsNoTracking

直接执行sql语句//全表查询 List&lt;Users&gt;ulist=se.Database.SqlQuery&lt;Users&gt;(&quot;select*fromusers&quot;).T...

EF Code First常用命令

Enable-Migrations启用数据库迁移Enable-Migrations –EnableAutomaticMigrations 启动自动迁移Add-Migration Name(名字可...

EF Code First 多对多关系配置

Code First配置多对多关系,常规有两种方法例如我们有一张学生表,和一张课程表,学生和课程是一个多对多的关系方法1:单纯...

解决:基础提供程序在 Open 上失败,EF无法生成实体问题

在学校图书馆的电脑上安装VS2013和SQL R2后,调试项目报错:基础提供程序在 Open 上失败怀疑是数据库的问题,然后删除数据...

net core过滤器。net core过滤器中获取依赖注入对象。net core过滤器中使用依赖注入。ServicEFilter 

虽然对象都可以直接实例化得到。但是所有的对象依赖关系,都用DI容器去管理,这样后面想要更换对象的时候也非常方便,项目...

EF状态System.Data.EntityState的一点理解

System.Data.EntityState一共有五种状态分别是Added,Deleted,Modified,UnChanged,Detached下面给一个简单的解释System.Data...
这一生多幸运赶上过你.
排名
8
文章
243
粉丝
7
评论
7
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术