public void Save(DataContainerCollection dataContainers) { CheckDisposed(); ArgumentUtility.CheckNotNull("dataContainers", dataContainers); if (dataContainers.Count == 0) { return; } var providerDefinition = dataContainers[0].ClassDefinition.StorageEntityDefinition.StorageProviderDefinition; if (dataContainers.Any(dataContainer => dataContainer.ClassDefinition.StorageEntityDefinition.StorageProviderDefinition != providerDefinition)) { throw CreatePersistenceException("Save does not support multiple storage providers."); } var provider = _storageProviderManager.GetMandatory(providerDefinition.Name); provider.BeginTransaction(); try { provider.Save(dataContainers); provider.UpdateTimestamps(dataContainers.Where(dc => dc.State != StateType.Deleted)); provider.Commit(); } catch { try { provider.Rollback(); } // ReSharper disable EmptyGeneralCatchClause catch // ReSharper restore EmptyGeneralCatchClause { } throw; } }