Отладка EF App блокирует таблицы БД? - PullRequest
1 голос
/ 25 января 2012

У меня есть приложение WCF, в котором есть 5-6 моделей EF. В рабочей среде будет работать только один экземпляр этого приложения.

Но в разработке одновременно работают 5 разработчиков. (Против той же базы данных.)

Мы замечаем, что иногда таблицы в нашей БД SQL Server 2008 R2 блокируются. Похоже, что когда кто-то делает шаг за отладкой, и ему нужно оставить его на несколько минут.

Мне любопытно, почему EF будет держать замок на столе. Как кто-то может держать замок на столе, используя EF? Что я могу сделать, чтобы предотвратить это?

ПРИМЕЧАНИЕ. Это же приложение обращается к конечной точке служб данных WCF (OData) для получения некоторых своих данных (из той же базы данных). Я не вижу, как OData будет блокировать БД, но я подумал, что упомяну это, если это важно.

Ответы [ 2 ]

1 голос
/ 25 января 2012

Есть только одно решение.Каждый разработчик будет иметь локально установленную базу данных и запускать сеанс отладки в своей среде!Все остальное не подходит для среды разработки.Используйте SQL Server Express или SQL Server Developer edition.

0 голосов
/ 25 января 2012

Все, что мы можем сделать, это рисковать различными догадками.Например.если в вашей модели данных отсутствуют надлежащие индексы, то поиск записей превращается в сканирование таблиц и эскалация блокировок до уровня таблицы.

Реальным решением является правильное исследование блокировки.Что именно вызывает блок, какой именно ресурс ожидает?Какой сеанс / транзакция / оператор содержит ресурс, необходимый для какого-либо другого сеанса / транзакции / оператора.

Используйте Монитор активности или who_is_active или sp_blitz .Прочитайте документ «Ожидания и очереди» .

...