Для целей интеграционного тестирования мы сохраняем данные и читаем их обратно из SQL. Чтобы избежать «мусора» в тестовой базе данных, он выполняется в транзакции и откатывается.
Во время выполнения этой транзакции выдается исключение «Ошибка транзакции»:
using (var transaction = new TransactionScope())
{
// saving (submitchanges)
// reading (linq2sql select to get saved data) // 'Transaction has aborted' was thrown
// rollback
}
При использовании явной обработки соединения / транзакции это работает хорошо, но код выглядит ужасно.
Что я могу сделать?
Среда : .NET 3.5 / C #, MSSQL2k8
Подробное исключение:
System.Transactions.TransactionAbortedException: транзакция прервана.
----> System.Transactions.TransactionPromotionException: ошибка при попытке продвижения транзакции.
----> System.Data.SqlClient.SqlException: уже существует открытый DataReader, связанный с этой командой, который должен быть закрыт первым. *