net core 2.1 的项目, 有些地方业务比较复杂,所以经常使用到 DBContext 进行查询之类的操作, 程序运行 时不时的会爆出
A second operation started on this context before a previous operation completed. Any instance members are not guaranteed to be thread safe.
这样的问题,目前DBContext 就是通过 startup里边进行注入, 然后service里边通过构造函数注入赋值的方式获取到context,这个问题是什么原因可能造成的?
建议检查一下是不是代码中有地方调用 async 方法(比如 ToListAsync )时漏写了 await
用core就别什么service了
你的问题应该是service对象的生命周期没管理好.
每次查询结束后尽量都 ToXxx()一下,比如ToList。ToXxx就意味着查询结束,你这个问题多半是因为代码上下文中前面的代码没有结束查询。
http://www.cnblogs.com/xishuai/p/ef-dbcontext-thread-safe.html