
EF删除
方法1:直接执行数据库
int count = oapEntities.Database.ExecuteSqlCommand("delete from users where id=@userid", new SqlParameter("userid", userId));
需要自己去写sql语句
方法2:先查询数据库在删除
1:先根据id查询需要删除的对象
Users users = oapEntities.Users.Where(a => a.Id == userId).FirstOrDefault();
2:修改删除的状态
oapEntities.Users.Remove(users);
注意这一步只是修改一个状态而已不会真正的删除
3:执行保存数据库操作,这一步才会把真正的操作反应的数据库
int count = oapEntities.SaveChanges();
方法3:不需要自己写sql语句,而且也不需要查询一次数据库
自己实例化一个直接修改状态就不用去重新查询一次,这样就可以节省效率
Users users = new Users() { Id = userId };
//修改他的状态为删除
oapEntities.Entry(users).State = System.Data.Entity.EntityState.Deleted;
tip:当然也需要调用SaveChanges进行保存更改到数据库
三种方法的效率对比
理论上来说:第一章最快,然后是第三种,第二种最慢
第二种最慢:是相比其他两种他不仅需要删除,而且督多了一个查询数据库的步骤
第三种理论上比第一种慢的原因:是因为第三种他多了生成sql语句的过程,第一种sql语句是直接写出来的
批量删除
注意批量删除尽量避免循环操作数据库
第一步:获取需要删除的id
//第一步:找到所有需要删除的id
$("#userTable input[type='checkbox']:checked").each(function () {
ids += $(this).val() + ",";
});
第二步:把id传到后台,把这些id的状态都修改成删除
public ActionResult BatchDelete(string userIds)
{
//先实例化ef的上下文对象
oapEntities oapEntities = new oapEntities();
//去掉最后一个逗号
string trimUserIds = userIds.TrimEnd(',');
List<string> userIdList = trimUserIds.Split(',').ToList();
//循环修改id涉及到用户的状态
foreach (string item in userIdList)
{
Users users = new Users() { Id = Convert.ToInt32(item) };
oapEntities.Entry(users).State = System.Data.Entity.EntityState.Deleted;
}
int count = oapEntities.SaveChanges();//保存数据库的方法,返回受影响的行数
return Json(count);
}
第三步:调用saveChanges方法即可
oapEntities.SaveChanges();保存数据库的方法,返回受影响的行数,真正执行数据库操作的地方,
注意不要循环的去执行oapEntities.SaveChanges(),这样他就是循环的执行数据库了
作业:
1:实现删除和批量删除
2:批量删除的时候前台即时删除
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
评价
排名
1
文章
860
粉丝
112
评论
163
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术