MyDbContext单例问题

2020-07-30 15:47发布

并发时会报错,该如何解决??

标签:
4条回答
爷、活的狠高调
2楼-- · 2020-07-30 16:22

统一回复:出现该问题的原因已找到,DbContext实例是单一实例,但我却用了多个线程在此单例上操作数据,由于DbContext在操作数据后会调用SaveChanges方法,该方法会和当前上下文一一对应,在多线程时,这里就会报错。
解决方法:没用锁,试过用连接池,感觉挺耗性能,所以将插入操作分离开了,用了RabbitMQ。

查看更多
▲ chillily
3楼-- · 2020-07-30 16:34

entity framework core 不支持在同一个DbContext实例上运行多个操作,会产生线程问题。
官方默认的注册周期为scope

查看更多
Animai°情兽
4楼-- · 2020-07-30 16:39

你使用的connecttion对象是只有一个,多个线程使用时,如果前面一个线程关闭了这个connection,其他线程在使用这个connecttion对象就会报错,所以你这个并发的地方每个线程都需要使用一个connection对象,保证connecttion对象的线程安全
可以参考这个链接
https://www.cnblogs.com/jeffwongishandsome/archive/2011/08/09/2133114.html

查看更多
走好不送
5楼-- · 2020-07-30 16:43

你都共用的一个connection,别人正在使用的时候,另一个程序已经释放了,所以就有问题了

查看更多
登录 后发表回答