public void TryTransactionScope() { int count; TryDeleteAllTestData(); var countryItems = GetCountryItems(); var documentItems = new List <DocumentItem> { GetDocumentItem(ContactTestFixtureData.Keys.Document[1]), GetDocumentItem(ContactTestFixtureData.Keys.Document[2]), GetDocumentItem(ContactTestFixtureData.Keys.Document[3]) }; var addressItems = new List <AddressItem> { GetAddressItem(ContactTestFixtureData.Keys.Address[1]), GetAddressItem(ContactTestFixtureData.Keys.Address[2]), new AddressItem() }; try { var countryItemsSaved = new List <CountryItem>(countryItems.Count); count = countryItems.Count; for (var i = 0; i < count; i++) { CountryItem countryItemSaved = ContactAgentFactory .CreateCountryAgent() .SaveCountryItem(countryItems[i]); Debug.WriteLineIf(countryItemSaved.HasErrors, "Error saving countryitem " + (i + 1) + " / " + count + "\n\t" + countryItemSaved.Errors); countryItemsSaved.Add(countryItemSaved); } using (var scope = new TransactionScope()) { var addressItemsSaved = new List <AddressItem>(addressItems.Count); var documentItemsSaved = new List <DocumentItem>(documentItems.Count); count = documentItems.Count; for (var i = 0; i < count; i++) { DocumentItem documentItemSaved = ContactAgentFactory .CreateDocumentAgent() .SaveDocumentItem(documentItems[i]); documentItemsSaved.Add(documentItemSaved); } count = addressItems.Count; for (var i = 0; i < count; i++) { AddressItem addressItemSaved = ContactAgentFactory .CreateAddressAgent() .SaveAddressItem(addressItems[i]); Debug.WriteLineIf(addressItemSaved.HasErrors, "Error saving AddressItem " + (i + 1) + " / " + count + "\n\tError = " + GetErrorString(addressItemSaved.Errors)); addressItemsSaved.Add(addressItemSaved); } bool succes = !(from i in documentItemsSaved where i.HasErrors select i).Any() & !(from i in addressItemsSaved where i.HasErrors select i).Any(); if (succes) { scope.Complete(); Debug.WriteLine("OK"); } else { throw new ApplicationException(GetErrorString(addressItemsSaved.ToArray()) + GetErrorString(documentItemsSaved.ToArray())); } } } catch (Exception ex) { Debug.WriteLine("Error(s) occured.\n" + ex.Message); } }