public void TestCommit_SimpleInsertion() { IRepository <Customer> repository = _manager.GetRepository <Customer>(); GetCustomerByCivilStatusQuery.Criteria criteriaByStatus = GetCustomerByCivilStatusQuery.Criteria.SearchByStatus(GetCustomerByCivilStatusQuery.CivilStatus.Married); GetCustomerByIdQuery.Criteria criteriaById = GetCustomerByIdQuery.Criteria.SearchById(2); List <Customer> customerResults = new List <Customer>(); IUnitOfWork uow = new UnitOfWork(); customerResults.AddRange(repository.Matching(criteriaByStatus)); customerResults.AddRange(repository.Matching(criteriaById)); IBaseMapper mapper = DataSynchronizationManager.GetInstance().GetMapper <Customer>(); Customer customer1 = new Customer(mapper) { Number = "1" }; Customer customer2 = new Customer(mapper) { Number = "2" }; Customer customer3 = new Customer(mapper) { Number = "3" }; //Sequence of observation affects commit order uow.RegisterNew(customer1); uow.RegisterNew(customer3); uow.RegisterNew(customer2); IList <string> sequenceDescription = new List <string>(); uow.Commit( (domainObject, action, results) => { string description = BaseMapper.GetHashValue <string>(results, CustomerMapper.SUCCESS_DESCRIPTION); sequenceDescription.Add(string.Format("{0}={1}={2}", description, action.ToString(), domainObject.Mapper.GetEntityTypeName())); }, (domainObject, action, results) => { } ); Assert.AreEqual("1=Insert=Customer", sequenceDescription[0]); Assert.AreEqual("3=Insert=Customer", sequenceDescription[1]); Assert.AreEqual("2=Insert=Customer", sequenceDescription[2]); }