Я использую следующий код, чтобы обновить вторую таблицу (Info2) с идентификатором, используемым из первой таблицы (info2.Id = info.Id;) , Когда выполняется второе сохранение (info2.Save()), я получаю сообщение об ошибке: «Существует уже открытый DataReader, связанный с этой Командой, который должен быть закрыт первым». Может ли кто-нибудь увидеть, что я могу делать неправильно.SubSonic Transactions - Вставка во вторую таблицу с идентификатором возврата из первой таблицы
дозвуковых версия 3.0.0.3 и SQL Server 2005
Благодаря
using (SharedDbConnectionScope sharedConnectionScope = new SharedDbConnectionScope())
{
using (TransactionScope ts = new TransactionScope())
{
Info info = new Info();
info.Desc = "Some information";
info.Save();
Info2 info2 = new Info2();
info2.Id = info.Id;
info2.Desc = "More information";
info2.Save();
ts.Complete();
}
}
Я думаю, что эта ошибка будет следовать за дозвуковыми пользователями навсегда. Это было неправильно в документах некоторое время назад. Чтобы запомнить правильный порядок, я всегда помню, что Connection должен знать о транзакции, и, таким образом, транзакция идет первым. Отклоните скобки из строки TransactionScope. Делает его более читаемым с помощью вложенных предложений. –