В веб-приложении MVC у меня есть действие, которое выполняет много дБ обновлений. Он заключен в транзакцию со следующими параметрами:
new TransactionScope(
TransactionScopeOption.RequiresNew, // a new transaction will always be created
new TransactionOptions() { IsolationLevel = IsolationLevel.ReadUncommitted }, // we will allow volatile data to be read during transaction
TransactionScopeAsyncFlowOption.Enabled //Allows transactions to work in async/await scenarios. Without this flag, an exception is thrown in such cases.
)
- В рамках этой транзакции мы обновляем таблицу A.
- У нас есть dB View B, который выбирает данные из таблицы A, среди многих другие таблицы и выполняет сложные вычисления, которые мы не хотим копировать в нашем коде.
- Нам также необходимо извлечь данные из представления B в рамках этой же транзакции.
Проблема: вычисления в представлении B, которые зависят от таблицы A, не используют новые значения в Таблица A после того, как они были обновлены ранее в транзакции.
Есть ли в любом случае "refre sh" представление B, чтобы оно использовало эти обновленные значения в таблице A в транзакции? Или мне нужно зафиксировать изменения, а затем повторно запросить базу данных? Я действительно не хочу этого делать, потому что логика c, которая следует после запроса View B, в случае сбоя, должна откатить все обновления до.