Структура Entity Framework и уровень изоляции транзакций

Я использую Entity Framework 4.0. Теперь мне нужно ограничить доступ к таблице во время чтения или записи на нее. Вероятно, речь идет об уровне изоляции транзакций.

Как мне это сделать?

Обновить

вот что я имею

using (var db = new MyDb()) { using (TransactionScope scope = new TransactionScope()) { var item = db.MyItems.Single(x => x.Id == 5); item.Price = 12; db.SaveChanges(); scope.Complete(); } } 

Однако, когда я помещаю точку останова в любую строку внутри using (TransactionScope scope и когда я останавливаюсь там, а затем я иду в Sql Server Management Studio и делаю запрос выбора (или даже обновление!) Из таблицы, которая используется внутри транзакции, по какой-то причине я не получаю ошибку. Но почему? Это не должно позволить мне читать данные во время выполнения транзакции.

По умолчанию транзакция имеет IsolationLevel of Serializable. Сериализуемый – самый высокий уровень. Для этого требуется, чтобы транзакция завершилась до того, как любая другая транзакция разрешила работать с данными.

Он имеет следующие ограничения:

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

Это отличная запись в блоге, в которой объясняется, как использовать транзакции с объектами Framework Entity Framework: Entity Framework

ОБНОВИТЬ

В Entity Framework 6 по умолчанию IsolationLevel изменен на READ_COMMITTED_SNAPSHOT для баз данных, созданных с использованием кода First, что потенциально позволяет увеличить масштабируемость и уменьшить количество тупиков. Ознакомьтесь с будущей спецификацией EF 6 на codeplex

  • Использование транзакций или SaveChanges (false) и AcceptAllChanges ()?
  • javax.transaction.Transactional vs org.springframework.transaction.annotation.Transactional
  • Django: как я могу защитить от одновременной модификации записей в базе данных
  • TransactionScope автоматически переходит на MSDTC на некоторых машинах?
  • Откат вложенной / дочерней транзакции
  • Операционная система Android
  • Как откатить транзакцию базы данных при тестировании служб с помощью Spring в JUnit?
  • Как сделать большие неблокирующие обновления в PostgreSQL?
  • Как интегрировать весну с сеансом гибернации и управлением транзакциями?
  • Что произойдет, если вы не совершаете транзакцию с базой данных (скажем, SQL Server)?
  • Понимание транзакций Spring. Что происходит, когда транзакционный метод вызывает другой транзакционный метод?
  • Interesting Posts

    Крупные операторы Switch: Bad OOP?

    Как использовать 3-значные цветовые коды, а не 6-значные цветовые коды в CSS?

    ANDROID: идентификатор электронной почты для почтового клиента электронной почты пуст в android-parse

    Включение драйвера AMD Catalyst в Windows 8 приводит к отключению дисплея ноутбука

    Как преобразовать дерево выражений в частичный запрос SQL?

    Что означает опция «Пробуждение по шаблону» в настройках сетевой карты?

    Изменение удаленного раздела на NTFS без необходимости восстановления на другой диск

    Заменить нечисловую пустую строку

    Холст HTML5 и сглаживание

    Сделать Firefox автоматически задавать уровень масштабирования для новых веб-страниц

    Как я могу перебирать все флажки в форме?

    Неправильно ли использовать break для выхода из цикла в Java?

    OEM Office 2010 без носителя – как переустановить?

    API Java для анализа файла схемы XSD

    Скрипт для связывания расширения с программой

    Давайте будем гением компьютера.