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);
            }
        }