我试图研究这个话题,但我在这里看到的大多数问题/答案与我认为是真实的或者在他们的回答中相互矛盾 - 可能是因为他们已经有几年了。
如果我有一个多线程environemnt(两个用例:ASP.NET和其他一些Windows服务)。如果我同时运行两个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();
}
答案 0 :(得分:1)
是的,没关系。您可以有两个(或任意数量)同时请求,只要它们使用不同的DbContext
s。