Вот текущая архитектура исходного кода области моей транзакции. Третья вставка вызывает исключение .NET (не исключение SQL) и не откатывает два предыдущих оператора вставки. Что я делаю не так?
РЕДАКТИРОВАТЬ: Я удалил попытку/catch из вставки2 и вставки3. Я также удалил утилиту обработки исключений из вставки1 try/catch и поставил «throw ex». Он по-прежнему не откатывает транзакцию.
РЕДАКТИРОВАТЬ 2: Я добавил try/catch обратно в метод Insert3 и просто добавил "throw " в операторе catch. Он по-прежнему не откатывает транзакцию.
ОБНОВЛЕНИЕ: Судя по полученным отзывам, класс «SqlHelper» использует объект SqlConnection для устанавливает соединение с базой данных, затем создает объект SqlCommand, устанавливает для свойства CommandType значение «StoredProcedure» и вызывает метод ExecuteNonQuery объекта SqlCommand.
Я тоже не стал добавлять Привязка транзакции = Явная отмена привязки к текущей строке подключения. Я добавлю это во время моего следующего теста.
public void InsertStuff()
{
try
{
using(TransactionScope ts = new TransactionScope())
{
//perform insert 1
using(SqlHelper sh = new SqlHelper())
{
SqlParameter[] sp = { /* create parameters for first insert */ };
sh.Insert("MyInsert1", sp);
}
//perform insert 2
this.Insert2();
//perform insert 3 - breaks here!!!!!
this.Insert3();
ts.Complete();
}
}
catch(Exception ex)
{
throw ex;
}
}
public void Insert2()
{
//perform insert 2
using(SqlHelper sh = new SqlHelper())
{
SqlParameter[] sp = { /* create parameters for second insert */ };
sh.Insert("MyInsert2", sp);
}
}
public void Insert3()
{
//perform insert 3
using(SqlHelper sh = new SqlHelper())
{
SqlParameter[] sp = { /*create parameters for third insert */ };
sh.Insert("MyInsert3", sp);
}
}
Подробнее здесь: https://stackoverflow.com/questions/339 ... ransaction
TransactionScope не откатывает транзакцию ⇐ C#
Место общения программистов C#
1727955683
Anonymous
Вот текущая архитектура исходного кода области моей транзакции. Третья вставка вызывает исключение .NET (не исключение SQL) и не откатывает два предыдущих оператора вставки. Что я делаю не так?[b]
РЕДАКТИРОВАТЬ:[/b] Я удалил попытку/catch из вставки2 и вставки3. Я также удалил утилиту обработки исключений из вставки1 try/catch и поставил «throw ex». Он по-прежнему не откатывает транзакцию.[b]
РЕДАКТИРОВАТЬ 2:[/b] Я добавил try/catch обратно в метод Insert3 и просто добавил "throw " в операторе catch. Он по-прежнему не откатывает транзакцию.[b]
ОБНОВЛЕНИЕ:[/b] Судя по полученным отзывам, класс «SqlHelper» использует объект SqlConnection для устанавливает соединение с базой данных, затем создает объект SqlCommand, устанавливает для свойства CommandType значение «StoredProcedure» и вызывает метод ExecuteNonQuery объекта SqlCommand.
Я тоже не стал добавлять Привязка транзакции = Явная отмена привязки к текущей строке подключения. Я добавлю это во время моего следующего теста.
public void InsertStuff()
{
try
{
using(TransactionScope ts = new TransactionScope())
{
//perform insert 1
using(SqlHelper sh = new SqlHelper())
{
SqlParameter[] sp = { /* create parameters for first insert */ };
sh.Insert("MyInsert1", sp);
}
//perform insert 2
this.Insert2();
//perform insert 3 - breaks here!!!!!
this.Insert3();
ts.Complete();
}
}
catch(Exception ex)
{
throw ex;
}
}
public void Insert2()
{
//perform insert 2
using(SqlHelper sh = new SqlHelper())
{
SqlParameter[] sp = { /* create parameters for second insert */ };
sh.Insert("MyInsert2", sp);
}
}
public void Insert3()
{
//perform insert 3
using(SqlHelper sh = new SqlHelper())
{
SqlParameter[] sp = { /*create parameters for third insert */ };
sh.Insert("MyInsert3", sp);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/339269/transactionscope-not-rolling-back-transaction[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия