我试图研究这个主题,但是我在这里看到的大多数问题/答案都与我认为是真实的或在他们的回应中矛盾的事情 - 可能是因为他们已经几年了旧。
如果我有一个多螺纹环境(两个用例:ASP.NET和其他Windows Service)。如果我同时运行两个EF6异步调用,但是使用单独的UnitOfWork
/DbContext
会抛出吗?实际上,它似乎从未有过,但这与以前的答案有关吗?
以前我曾认为,只要DbContext
没有共享,就会有任何锁定的数据库特权。因此,只有在表/查询被阻止时才会阻止。
即。让我们假设这两个呼叫都同时发生。会发生什么?
// Request 1
using (var uow = new UnitOfWork())
{
var list = await uow.GetMeSomething().ToListAsync();
}
// Request 2
using (var uow = new UnitOfWork())
{
var list = await uow.GetMeSomething().ToListAsync();
}
是的,很好。只要使用不同的 DbContext
s。
执行并发数据库请求可能不会给您带来太大的收益。特别是,如果两个请求都达到了相同的旋转锈式驱动器,那么我不会期望提高速度太多,如果有的话。