Этот вопрос уже имеет ответы здесь :
Закрытый 7 лет назад .
Возможный дубликат: Платформа объекта с NOLOCK
Я использую EF4 и.Net 4 для загрузки некоторого XML из файла в базу данных.
У меня есть класс переносить ObjectContext, и имеет методы, которые добавляют упорядоченные объекты от XML-файла до различных EntityCollections, которые представляют мои таблицы.
Каждый XML-файл содержит приблизительно 200 000 объектов в среднем, класс обертки создает ObjectContext на конструкции и хранит ссылку в локальной частной переменной класса, которая затем используется методами.
Когда я закончил создавать объекты, я звоню:
entities.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
Это создает транзакцию на сервере, который является согласно дизайну EntityFramework. Однако эта транзакция полностью блокирует вниз мой DB даже на таблицах, которые не добавляются к.
Я попробовал различные вещи попытаться двигаться, этот включая обертывание сохраняют изменения в TransactionScope как это:
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Suppress,
new TransactionOptions { IsolationLevel = IsolationLevel.ReadUncommitted }))
{
entities.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
transaction.Complete();
}
Я также попытался создать TransactionScope прежде, чем создать ObjectContext в попытке влиять на базовую транзакцию, используемую во время SaveChanges.
Идеально я хотел бы загрузить несколько файлов сразу, но это будет невозможно, если DB будет заблокирован во время изменений сохранения.
Кто-либо знает работу вокруг к этой проблеме? Там находится далеко, чтобы вынудить EntityFramework не использовать транзакцию?
Спасибо за любую справку заранее.
James