相关:EntityFramework(6)和异步(waitForActivation)?
但是,它并没有解决等待多个项目,只是一个。我的目标是按照这些思路完成一些事情
var car = db.Cars.ToListAsync();
var people = db.People.ToListAsync();
Task.WhenAll(car,people);
不幸的是我得到了这个运行时异常(我真的应该知道)
在前一个异步操作完成之前,在此上下文上启动了第二个操作。使用 'await' 确保在此上下文上调用另一个方法之前已完成任何异步操作。不保证任何实例成员都是线程安全的。
数据库上下文不是线程安全的。好的。所以现在我正在考虑将调用分解为方法,然后等待两个方法调用(或者一个简单的演示方法是将上面显示的每个 db 调用包装在using(db){}
语句中)。无论如何,问题在于使用该模式将需要一个新的 DbContext 为每个ToListAsync
.
每个 ToListAsync 调用使用 DbContext 会对连接池构成威胁吗?这是反模式吗?