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

C# ASP.NET MVC多线程同时访问数据库,c#,asp.net-mvc,multithreading,entity-framework,asp.net-mvc-4,C#,Asp.net Mvc,Multithreading,Entity Framework,Asp.net Mvc 4,我正在使用实体框架构建一个ASP.NET MVC 4应用程序,其中多个线程可以同时访问一个表(添加、删除行等)。现在我正在每个控制器中使用(UserDBContext db=new UserDBContext())(因为MVC框架为每个请求创建了一个单独的线程,所以为每个请求都创建了一个新的DBContext)。从我所读到的内容来看,这是安全的;但是,我很好奇: 当两个线程访问同一个表但不访问同一行时会发生什么情况?是否允许两个线程同时访问 当两个线程修改同一行时会发生什么情况?例如,一个线程尝

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

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

  • 当两个线程修改同一行时会发生什么情况?例如,一个线程尝试读取,而另一个线程尝试删除?一个线程是否被阻止(进入睡眠状态),然后在另一个线程完成时自动唤醒


  • 谢谢!

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

    2:锁定。再一次。一个人必须等待


    这是非常基本的,所以我建议您后退两步,使用“SQL for dummies”之类的工具,了解任何像样的数据库都能保证的酸性条件。顺便说一句,这里的内容与EF无关。这都是在数据库内部级别完成的。

    +3:乐观并发性