首页 > 数据库技术 > 详细

ef linq方式插入+sql操作数据注意事项

时间:2021-04-19 14:51:45      阅读:16      评论:0      收藏:0      [点我收藏+]

  容易错,便写个博客记一下。

  先看原来的写法:

db.表1.AddRange(temp);
db.Database.ExecuteSqlCommand($@"INSERT INTO dbo.表2 ...此处逻辑省略”);
db.SaveChanges();

  运行后发现数据库没有新增的数据,后发现和执行顺序有关,AddRange只是将表加入到内存,等SaveChange以后才会正式提交入库,而ExecuteSqlCommand是需要表1数据的,这就会导致这一步取不到数,因为还没有提交。

  改完之后的写法:

db.表.AddRange(temp);
db.SaveChanges();
db.Database.ExecuteSqlCommand($@"INSERT INTO dbo.表 ...此处省略”);

  先提交使数据插入到库,再执行了sql命令,sql命令自带提交所以无需再SaveChange。

 

  PS:顺便再提一点:批量插入数据前如果有校验是否非重复再插入,导致插入慢的,可以建个附表,数据全插入到附表,再通过主表 Not Exists 附表来实现批量插入。这种比程序里foreach循环判断速度快。

ef linq方式插入+sql操作数据注意事项

原文:https://www.cnblogs.com/sunshine-wy/p/14676192.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!