首页新闻找找看学习计划

EF的批量删除和修改问题

0
悬赏园豆:200 [已解决问题] 解决于 2018-04-24 07:55
  public int Delete(Expression<Func<T, bool>> predicate)
        {
            Table.RemoveRange(Table.Where(predicate));
            return Save();
        }

上面的方法,生成了N条Delete语句,很明显,不是最佳方式,有没有哪位能提供Expression<Func<T, bool>> predicate解析成SQL语句的代码?

happydaily的主页 happydaily | 小虾三级 | 园豆:581
提问于:2018-03-18 16:17
< >
分享
最佳答案
0

ef中批量删除是生成多条DELETE语句,可以用ef中的扩展包或者dapper或者直接用ef core,ef core性能秒杀ef

收获园豆:100
Jeffcky | 老鸟四级 |园豆:2544 | 2018-03-18 23:04
其他回答(3)
0

没有应用场景的最佳实践有个屁用!

1、大量删除数据基本不会(99.9999%概率不会有这种需求)在生产环境中出现。几十条删除,怎么写根本就无所谓。

2、真的需要大量删除,写RawSQL或者找DBA操作不是更好。

收获园豆:20
爱编程的大叔 | 园豆:29784 (高人七级) | 2018-03-19 09:26

是的,我的表可能几年都不会达到百万级别,这就是我可以写一堆烂代码的理由?

支持(0) 反对(0) happydaily | 园豆:581 (小虾三级) | 2018-03-19 17:23
0

大叔说的对.

话说我任然觉得封装EF之后.就不是orm了.

收获园豆:20
吴瑞祥 | 园豆:28675 (高人七级) | 2018-03-19 09:59

你会去每次查询,修改,删除都写一堆连接的代码吗?

支持(0) 反对(0) happydaily | 园豆:581 (小虾三级) | 2018-03-19 17:20

@happydaily: 不会.所以上下文实例都是从工厂或者容器里取的.

支持(0) 反对(0) 吴瑞祥 | 园豆:28675 (高人七级) | 2018-03-19 17:23

@吴瑞祥: 那就是的了,我现在就是在干封装这件事,这样很多通用的操作,我就可以直接调用方法了。

支持(0) 反对(0) happydaily | 园豆:581 (小虾三级) | 2018-03-19 17:26

@happydaily: 封装了.就不是orm了.从容器里取实例和封装是两回事.

支持(0) 反对(0) 吴瑞祥 | 园豆:28675 (高人七级) | 2018-03-19 18:22
0

下载一个EntityFramework.Extensions

收获园豆:60
Eric.luo | 园豆:834 (小虾三级) | 2018-03-19 10:52

看过,但是没看明白,他是如何把条件转化成SQL的?

支持(0) 反对(0) happydaily | 园豆:581 (小虾三级) | 2018-03-19 17:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册