2

Я создаю приложение ASP.NET MVC 4, используя Entity Framework, где несколько потоков могут обращаться к таблице в одно и то же время (добавить, удалить строку и т. Д.) Сейчас я делаю using (UserDBContext db = new UserDBContext()) в каждом контроллере (поэтому для каждого запроса создается новый DBContext, поскольку среда MVC создает отдельный поток для каждого запроса). Из того, что я читал, это безопасно; тем не менее, мне любопытно:ASP.NET MVC несколько потоков доступ к базе данных одновременно

  1. Что происходит, когда два потока обращаются к одной и той же таблице, но не к той же строке? Доступны ли оба потока одновременно?

  2. Что происходит, когда два потока изменяют один и тот же номер строки? скажем, один пытается читать, а другой пытается удалить? Является ли один поток заблокированным (усыпанным), затем автоматически разбуживается, когда другой делается?

Спасибо!

ответ

4

1: Блокировка в базе данных. Гарантирование многопользовательских сценариев является одним из главных приоритетов баз данных. Изучите основы. Есть хорошие книги.

2: Блокировка. Еще раз. Нужно ждать.

Это чрезвычайно важно, поэтому я предлагаю вам сделать 2 шага назад и получить что-то вроде «SQL для манекенов» и узнать об условиях ACID, которые гарантирует любая достойная база данных. НИЧЕГО здесь не связано с EF. Все это делается на внутреннем уровне базы данных.

+1

+3: Оптимистичный параллелизм –

+0

Да. Но это действительно нужно, чтобы изучить основы. – TomTom

Смежные вопросы