Структура Entity Framework и уровень изоляции транзакций
Я использую Entity Framework 4.0. Теперь мне нужно ограничить доступ к таблице во время чтения или записи на нее. Вероятно, речь идет об уровне изоляции транзакций.
Как мне это сделать?
Обновить
- Firebase runTransaction не работает - MutableData имеет значение null
- Откат вложенной / дочерней транзакции
- EJB 3.0 - Вложенная транзакция! = Требуется Новое?
- Как TransactionScope откатывает транзакции?
- TransactionScope с файлами в C #
вот что я имею
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 и делаю запрос выбора (или даже обновление!) Из таблицы, которая используется внутри транзакции, по какой-то причине я не получаю ошибку. Но почему? Это не должно позволить мне читать данные во время выполнения транзакции.
- EJB-транзакции в локальных методах-вызовах
- Как использовать TransactionScope в C #?
- Операционная система Android
- Что произойдет, если вы не совершаете транзакцию с базой данных (скажем, SQL Server)?
- Django: как я могу защитить от одновременной модификации записей в базе данных
- Как откатить транзакцию базы данных при тестировании служб с помощью Spring в JUnit?
- Использование транзакций или SaveChanges (false) и AcceptAllChanges ()?
- javax.transaction.Transactional vs org.springframework.transaction.annotation.Transactional
По умолчанию транзакция имеет IsolationLevel of Serializable. Сериализуемый – самый высокий уровень. Для этого требуется, чтобы транзакция завершилась до того, как любая другая транзакция разрешила работать с данными.
Он имеет следующие ограничения:
- Заявления не могут читать данные, которые были изменены, но еще не совершены другими транзакциями.
- Никакие другие транзакции не могут изменять данные, которые были прочитаны текущей транзакцией, до завершения текущей транзакции.
- Другие транзакции не могут вставлять новые строки с ключевыми значениями, которые будут попадать в диапазон ключей, считываемых любыми операторами в текущей транзакции, до завершения текущей транзакции.
Это отличная запись в блоге, в которой объясняется, как использовать транзакции с объектами Framework Entity Framework: Entity Framework
ОБНОВИТЬ
В Entity Framework 6 по умолчанию IsolationLevel изменен на READ_COMMITTED_SNAPSHOT для баз данных, созданных с использованием кода First, что потенциально позволяет увеличить масштабируемость и уменьшить количество тупиков. Ознакомьтесь с будущей спецификацией EF 6 на codeplex