public int Delete(Expression<Func<T, bool>> predicate) { Table.RemoveRange(Table.Where(predicate)); return Save(); }
上面的方法,生成了N条Delete语句,很明显,不是最佳方式,有没有哪位能提供Expression<Func<T, bool>> predicate解析成SQL语句的代码?
ef中批量删除是生成多条DELETE语句,可以用ef中的扩展包或者dapper或者直接用ef core,ef core性能秒杀ef
没有应用场景的最佳实践有个屁用!
1、大量删除数据基本不会(99.9999%概率不会有这种需求)在生产环境中出现。几十条删除,怎么写根本就无所谓。
2、真的需要大量删除,写RawSQL或者找DBA操作不是更好。
是的,我的表可能几年都不会达到百万级别,这就是我可以写一堆烂代码的理由?
大叔说的对.
话说我任然觉得封装EF之后.就不是orm了.
你会去每次查询,修改,删除都写一堆连接的代码吗?
@happydaily: 不会.所以上下文实例都是从工厂或者容器里取的.
@吴瑞祥: 那就是的了,我现在就是在干封装这件事,这样很多通用的操作,我就可以直接调用方法了。
@happydaily: 封装了.就不是orm了.从容器里取实例和封装是两回事.
下载一个EntityFramework.Extensions
看过,但是没看明白,他是如何把条件转化成SQL的?
@happydaily: ef里面有解释器,EntityFramework.Extensions直接改写了解释器,另外有些操作针对不同的数据库会有不同的sql。