私はこのようなコードを持っています:
using (TransactionScope transactionScope = new TransactionScope())
{
SetDefaults(products);
// Map the SizeCollectionIds of the products
_dataAccess.MapProductSizes(products);
// Mass update and insert missing parent records to the database
_dataAccess.UpdateParents(products);
// Get ids of parent products that were newly inserted
_dataAccess.PopulateParentProductByParentSku(products);
// Insert children into database
_dataAccess.InsertProducts(products);
// Insert the UPCs into the database
_dataAccess.InsertUPCs(products);
// Get Product Ids of newly inserted records
_dataAccess.PopulateProductIds(products);
// Get just the parent products to insert the brands
List<ParentProduct> parents = (from prod in products
select prod.ParentProduct).Distinct().ToList();
// Insert ParentProductBrand record
_dataAccess.InsertParentProductBrands(parents);
// Insert the custom attribute records
_dataAccess.InsertProductCustomAttributes(products);
transactionScope.Complete();
}
私が意図しているのは、トランザクションスコープで呼び出されたメソッドのどこかでエラーが発生した場合、トランザクションがロールバックされることですが、いくつかのテストの後、そうではないようで、私のデータは中途半端に終わってしまいます. 足りないものはありますか?これを機能させるには、メソッド内のデータ アクセス呼び出しを独自の TransactionScopes でラップする必要がありますか?