如题,小弟在此有几个疑问,先请教各路大佬,
1、EntityFramework6如何提高性能,我现在有5张表,每张都有5000多数据,每张表的字段有20多个,经过逻辑处理有要做更新,每2s更新一次,现在的性能非常差,更新500条数据都要8s。
2、EntityFramework6如何处理脏读,幻读。例如处理订单金额,商品数量怎么不让它计算出错。
1、EntityFramework6如何提高性能,我现在有5张表,每张都有5000多数据,每张表的字段有20多个,经过逻辑处理有要做更新,每2s更新一次,现在的性能非常差,更新500条数据都要8s。
2、EntityFramework6如何处理脏读,幻读。例如处理订单金额,商品数量怎么不让它计算出错。
好的,谢谢,还想大佬以我现在的项目设计模式指导下,我现在使用的是EF6+SQLServer2016,要控制商品的数量不会错乱和用户的金额不会出错,而且并发量比较大,请指导下在现在的项目基础上要怎么去控制好?
应该先Where再ToList吧
Find方法会先在EF的缓存中查找数据,如果找到就返回,找不到再执行数据库查询。Context上下文会追踪Entity的状态,这个状态表示的是在缓存中的状态,而非数据库中。之后进行savechanges才会将更改提交到数据库。 ToList是直接把数据加载到内存中,这样就产生了没必要的数据显示,I/O操作是比较耗时的,在读写服务器数据库里的数据再返回时,网络通信也有一定的影响。使用where 就是过滤数据,不查询没必要的显示。 使用IEnumerable,会使用集合的时候才去执行查询,这其实是一个什么时候加载数据的区别。
这显然是不应该的。查询操作应该把(ef 引擎)产生的 sql 语句交给数据库服务器系统去在服务器上直接执行查询算法,而不是把几百万条数据 copy 到客户端内存里再来过滤。