Проблема тупика Entity Framework - PullRequest
2 голосов
/ 19 августа 2010

У меня странная проблема с новой Entity Framework для .NET 4

У меня есть база данных SQL Server 2005 (EXPRESS), и моя служба записывает данные в две таблицы с использованием Entity Framework.Допустим, таблицы - это TableA и TableB.TableB имеет внешний ключ для TableA.В моей программе есть несколько потоков, которые записывают данные параллельно.Каждый поток имеет свой собственный ObjectContext.Программа создает объект TableA и помещает его в контекст объекта.Затем объекты для TableB создаются и помещаются в контекст объекта.Это повторяется для нескольких элементов TableA.

Наконец, когда вызывается метод ObjectContext.Save, я вижу в журнале тупиковую ошибку:

System.Data.SqlClient.SqlException: Transaction (ProcessID 56) был заблокирован на ресурсах блокировки с другим процессом и был выбран в качестве жертвы тупика.Повторите транзакцию.

Похоже, что она каким-то образом зависит от параметров базы данных, поскольку воспроизводится только для конкретной базы данных.Одна новая база данных проблема не воспроизводится.Какие настройки базы данных и таблицы могут повлиять на взаимоблокировку, когда Entity Framework выполняет пакетную вставку?Или может быть проблема где-то еще?

1 Ответ

1 голос
/ 18 августа 2011

За ваш комментарий:

TableB не был установлен primaryKey в базе данных, где была проблема воспроизведен

...