ASP.NET MVC多线程同时访问数据库

时间:2014-11-20 06:14:13

标签: c# asp.net-mvc multithreading entity-framework asp.net-mvc-4

我正在使用Entity Framework构建一个ASP.NET MVC 4应用程序,其中多个线程可以同时访问一个表(添加,删除行等)。现在我正在每个控制器中执行using (UserDBContext db = new UserDBContext())(因此,为每个请求创建一个新的DBContext,因为MVC框架为每个请求创建一个单独的线程)。从我读到的,这是安全的;但是,我很好奇:

  1. 当两个线程访问同一个表但不是同一行时会发生什么?是否允许两个线程同时访问?

  2. 当两个线程修改相同的时会发生什么?比如说,一个试图读取而另一个试图删除?一个线程是否被阻塞(进入休眠状态),然后在另一个线程完成时被自动唤醒?

  3. 谢谢!

1 个答案:

答案 0 :(得分:4)

1:锁定数据库。保证多用户场景是数据库的首要任务之一。学习基础知识。有好书。

2:锁定。再次。人们将不得不等待。

这是非常基础的,所以我建议你退两步,得到类似" SQL for dummies"并了解任何体面数据库保证的ACID条件。顺便说一句,这里没有与EF有关。这都是在数据库内部级别完成的。