pubic Create()
{
open.conn
begintransaction(readcommitted)
try{
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionOptions))
{
select * from table1 with (holdlock)
}
db.savechanges()
scope.complete()
}
catch{
transaction.Rollback()
}
finally{
transaction.Commit()
}
}
Вопросы:
если я заблокирую таблицу в области транзакции , Если в этой таблице есть ссылка на внешний ключ, эта таблица также будет заблокирована. Я где-то читал, что это правда
До конца область видимости не завершила таблицу заблокирована и недоступна для любой другой транзакции
Я не могу изменить структуру таблицы, может ли кто-нибудь помочь мне с этим, чтобы решить проблему взаимоблокировки, которая происходит.
Использование фиксации транзакции в блокеfinally является правильным или нет, потому что до ее фиксации я не могу получить доступ к таблице, которая заблокирована внутри область действия
Кроме того, я использовал уровень изоляции readcommit, а также добавил индекс для таблиц, которые я использую< /p>
на каждом экране я блокирую таблицу, которую использую, с помощью **holdlock**
У меня часто возникают тупиковые ситуации в моем приложении, потому что [list] [*]В приложении от 50 до 60 экранов [*]мы использовали Представления SQL для экранов списков [*]мы используем в основном только две таблицы, в которых хранятся все данные и около 170 столбцов. [*]моя функция будет вот так [/list] [code] pubic Create() {
open.conn begintransaction(readcommitted)
try{
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, transactionOptions)) {
select * from table1 with (holdlock)
}
db.savechanges() scope.complete()
} catch{ transaction.Rollback() } finally{ transaction.Commit() } } [/code] Вопросы: [list] [*]если я заблокирую таблицу в [b]области транзакции[/b] , Если в этой таблице есть ссылка на внешний ключ, эта таблица также будет заблокирована. Я где-то читал, что это правда
[*]До конца область видимости не завершила таблицу заблокирована и недоступна для любой другой транзакции
[*]Я не могу изменить структуру таблицы, может ли кто-нибудь помочь мне с этим, чтобы решить проблему взаимоблокировки, которая происходит.
[*]Использование фиксации транзакции в блокеfinally является правильным или нет, потому что до ее фиксации я не могу получить доступ к таблице, которая заблокирована внутри область действия
[*]Кроме того, я использовал уровень изоляции [b]readcommit[/b], а также добавил индекс для таблиц, которые я использую< /p>
[*]на каждом экране я блокирую таблицу, которую использую, с помощью **holdlock**