У меня возникли небольшие проблемы с получением транзакции с несколькими удалениями, работающей с использованием SubSonic в ASP.NET/SQL Server 2005. Кажется, она всегда вносит изменения в базу данных даже без вызова метода complete для объекта transactioncope?
Я читал сообщения об этом и пробовал различные альтернативы (переключение порядка моих операторов using), используя DTC, не используя DTC и т. Д., Но пока без радости.
Я собираюсь предположить, что проблема в моем коде, но я не могу определить проблему - может ли кто-нибудь помочь? Я использую SubSonic 2.2. Пример кода ниже:
using (TransactionScope ts = new TransactionScope())
{
using (SharedDbConnectionScope sts = new SharedDbConnectionScope())
{
foreach (RelatedAsset raAsset in relAssets)
{
// grab the asset id:
Guid assetId = new Select(RelatedAssetLink.AssetIdColumn)
.From<RelatedAssetLink>()
.Where(RelatedAssetLink.RelatedAssetIdColumn).IsEqualTo(raAsset.RelatedAssetId).ExecuteScalar<Guid>();
// step 1 - delete the related asset:
new Delete().From<RelatedAsset>().Where(RelatedAsset.RelatedAssetIdColumn).IsEqualTo(raAsset.RelatedAssetId).Execute();
// more deletion steps...
}
// complete the transaction:
ts.Complete();
}
}