Esempio n. 1
0
        public void UnitOfWork_Is_Rolledback_When_Containing_TransactionScope_Is_Rolledback()
        {
            using (var testData = new LinqToSqlDataGenerator(new TestDataDataContext()))
            {
                testData.Batch(actions =>
                               actions.CreateOrderForCustomer(actions.CreateCustomer()));
                int      orderId;
                DateTime?oldDate;

                using (var txScope = new TransactionScope(TransactionScopeOption.Required))
                    using (var uowScope = new UnitOfWorkScope(IsolationLevel.Serializable))
                    {
                        var ordersRepository = new LinqToSqlRepository <Order>();
                        var order            = (from o in ordersRepository
                                                select o).First();

                        oldDate         = order.OrderDate;
                        order.OrderDate = DateTime.Now;
                        orderId         = order.OrderID;
                        uowScope.Commit();
                    }

                using (var uowScope = new UnitOfWorkScope())
                {
                    var ordersRepository = new LinqToSqlRepository <Order>();
                    var order            = (from o in ordersRepository
                                            where o.OrderID == orderId
                                            select o).First();

                    Assert.That(order.OrderDate, Is.EqualTo(oldDate));
                }
            }
        }
        public void Test_Can_Query_MonthlySalesSummary_Based_On_Currency()
        {
            IList<MonthlySalesSummary> report;
            using (var testData = new NHTestDataGenerator(Factory.OpenSession()))
            using (var scope = new UnitOfWorkScope())
            {
                testData.Batch(actions => actions.CreateMonthlySalesSummaryWithAmount(
                    new Money{Amount = 100, Currency = "YEN"}
                    ));

                var repository = new NHRepository<MonthlySalesSummary>();
                report = (from summary in repository
                          where summary.TotalSale.Currency == "YEN"
                          select summary).ToList();

                scope.Commit();
            }

            Assert.That(report, Is.Not.Null);
            Assert.That(report.Count, Is.GreaterThan(0));

            report.ForEach(rep =>
            {
                Assert.That(rep.TotalSale, Is.Not.Null);
                Assert.That(rep.TotalSale.Amount, Is.GreaterThan(0));
                Assert.That(rep.TotalSale.Currency, Is.Not.Null);
                Assert.That(rep.TotalSale.Currency, Is.EqualTo("YEN"));
            });
        }
        public void Test_Can_Get_MonthlySalesSummary_With_Money_Type()
        {
            IList<MonthlySalesSummary> report;
            using (var testData = new NHTestDataGenerator(Factory.OpenSession()))
            using (var scope = new UnitOfWorkScope())
            {
                testData.Batch(action => action.CreateMonthlySalesSummaryForMonth(1));

                var repository = new NHRepository<MonthlySalesSummary>();
                report = (from summary in repository
                          where summary.Month == 1
                          select summary).ToList();

                scope.Commit();
            }

            Assert.That(report, Is.Not.Null);
            Assert.That(report.Count, Is.GreaterThan(0));

            report.ForEach(rep =>
                               {
                                   Assert.That(rep.Month == 1);
                                   Assert.That(rep.TotalSale, Is.Not.Null);
                                   Assert.That(rep.TotalSale.Amount, Is.GreaterThan(0));
                                   Assert.That(rep.TotalSale.Currency, Is.Not.Null);
                               });
        }
Esempio n. 4
0
        public void PerformActivity(Guid actorId, Guid flowId, IDictionary <string, object> attributeValues = null, string transitionName = null)
        {
            using (var scope = new UnitOfWorkScope(autoCommit: false))
            {
                try
                {
                    var organizationApplication = ServiceLocator.Current.GetInstance <IOrganizationApplication>();
                    var actor = organizationApplication.FindActor(actorId);

                    var flowRepository = ServiceLocator.Current.GetInstance <IRepository <Flow> >();
                    var flow           =
                        flowRepository.With(w => w.Node)
                        .With(w => w.Parent)
                        .With(w => w.AttributeInstances)
                        .Single(s => s.Id == flowId);

                    var processInstanceRepository = ServiceLocator.Current.GetInstance <IRepository <ProcessInstance> >();
                    var processInstance           = processInstanceRepository.Get(flow.ProcessInstanceId);

                    var processDefinitionRepository     = ServiceLocator.Current.GetInstance <IRepository <ProcessDefinition> >();
                    ProcessDefinition processDefinition = processDefinitionRepository.With(w => w.Nodes).Get(processInstance.ProcessDefinitionId);

                    ExecutionContext executionContext = new ExecutionContext(actor, processDefinition, processInstance, flow);
                    executionContext.PerformActivity(attributeValues);

                    scope.Commit();
                }
                catch
                {
                    throw;
                }
            }
        }
        public void Can_attach()
        {
            var customer = new Customer
            {
                FirstName = "Jane",
                LastName = "Doe"
            };
            var session = NHTestUtil.OrdersDomainFactory.OpenSession();
            ITransaction transaction = session.BeginTransaction();
            session.Save(customer);
            transaction.Commit();
            session.Evict(customer); //Detching from owning session
            session.Dispose(); //Auto flush

            using (var scope = new UnitOfWorkScope())
            {
                var repository = new NHRepository<Customer,int>();
                repository.Attach(customer);
                customer.LastName = "Changed";
                scope.Commit(); //Should change since the customer was attached to repository.
            }

            using (var testData = new NHTestData(NHTestUtil.OrdersDomainFactory.OpenSession()))
            {
                Customer savedCustomer = null;
                testData.Batch(x => savedCustomer = x.GetCustomerById(customer.CustomerID));
                Assert.IsNotNull(savedCustomer);
                Assert.AreEqual(savedCustomer.LastName, "Changed");
            }
        }
Esempio n. 6
0
        public void Calling_Commit_On_Child_Scope_DoesNot_Commit_Transaction()
        {
            var mockLocator     = MockRepository.GenerateStub <IServiceLocator>();
            var mockUOWFactory  = MockRepository.GenerateMock <IUnitOfWorkFactory>();
            var mockUOW         = MockRepository.GenerateMock <IUnitOfWork>();
            var mockTransaction = MockRepository.GenerateMock <ITransaction>();

            mockLocator.Stub(x => x.GetInstance <IUnitOfWorkFactory>()).Return(mockUOWFactory).Repeat.Once();
            mockUOWFactory.Expect(x => x.Create()).Return(mockUOW).Repeat.Once();
            mockUOW.Expect(x => x.BeginTransaction(IsolationLevel.ReadCommitted)).IgnoreArguments().Return(mockTransaction).Repeat.Once();
            mockTransaction.Expect(x => x.Commit()).Repeat.Never();
            mockTransaction.Expect(x => x.Rollback()).Repeat.Once();

            ServiceLocator.SetLocatorProvider(() => mockLocator);
            using (new UnitOfWorkScope(IsolationLevel.ReadCommitted))
            {
                Assert.That(UnitOfWorkScope.HasStarted);
                using (var childScope = new UnitOfWorkScope(IsolationLevel.ReadCommitted))
                {
                    childScope.Commit();
                }
            }

            Assert.That(!UnitOfWorkScope.HasStarted);
            mockUOWFactory.VerifyAllExpectations();
            mockUOW.VerifyAllExpectations();
            mockTransaction.VerifyAllExpectations();
        }
        public void Can_eager_fetch_many()
        {
            using (var testData = new EFTestData(OrdersContextProvider()))
            {
                Customer customer      = null;
                Customer savedCustomer = null;
                testData.Batch(x =>
                {
                    customer  = x.CreateCustomer();
                    var order = x.CreateOrderForCustomer(customer);
                    order.OrderItems.Add(x.CreateItem(order, x.CreateProduct()));
                    order.OrderItems.Add(x.CreateItem(order, x.CreateProduct()));
                    order.OrderItems.Add(x.CreateItem(order, x.CreateProduct()));
                });

                using (var scope = new UnitOfWorkScope())
                {
                    savedCustomer = new EFRepository <Customer>()
                                    .FetchMany(x => x.Orders)
                                    .ThenFetchMany(x => x.OrderItems)
                                    .ThenFetch(x => x.Product)
                                    .Where(x => x.CustomerID == customer.CustomerID)
                                    .SingleOrDefault();
                    scope.Commit();
                }

                Assert.NotNull(savedCustomer);
                Assert.NotNull(savedCustomer.Orders);
                savedCustomer.Orders.ForEach(order =>
                {
                    Assert.NotNull(order.OrderItems);
                    order.OrderItems.ForEach(orderItem => Assert.NotNull(orderItem.Product));
                });
            }
        }
Esempio n. 8
0
        //[CustomAuthorize(AuthorizedRoles = new[] { Roles.MunicipalityAdministrator, Roles.ZelsAdministrator })]
        public JsonResult ResetPassword(int userId)
        {
            User user;

            //SendResetPasswordConfirmationViewModel sendResetPasswordConfirmationViewModel;

            using (var scope = new UnitOfWorkScope())
            {
                user = _userRepository.Get(userId);
                if (user == null)
                {
                    throw new JsonException("Корисникот не е пронајден во системот.");
                }

                string password    = new PasswordGenerator().Generate();
                string passwordEnc = password.Md5String();

                user.SetPassword(passwordEnc);

                //sendResetPasswordConfirmationViewModel = new SendResetPasswordConfirmationViewModel
                //{
                //    FullName = user.FullName,
                //    Password = password
                //};

                _userRepository.Update(user);
                scope.Commit();
            }

            //sendResetPasswordConfirmationViewModel.To = user.UserName;
            //MailService.SendResetPasswordConfirmation(sendResetPasswordConfirmationViewModel);

            return(Json(true));
        }
Esempio n. 9
0
        public void Save_Updates_Existing_Order_Record()
        {
            int orderIDRetrieved;
            var updatedDate = DateTime.Now;

            using (var testData = new LinqToSqlDataGenerator(new TestDataDataContext()))
            {
                testData.Batch(actions =>
                               actions.CreateOrderForCustomer(actions.CreateCustomer()));
                using (var scope = new UnitOfWorkScope())
                {
                    var order = new LinqToSqlRepository <Order>().FirstOrDefault();
                    Assert.That(order, Is.Not.Null);

                    orderIDRetrieved = order.OrderID;
                    order.OrderDate  = updatedDate;

                    scope.Commit();
                }

                using (new UnitOfWorkScope())
                {
                    var orderRepository = new LinqToSqlRepository <Order>();
                    var order           = (from o in orderRepository
                                           where o.OrderID == orderIDRetrieved
                                           select o).FirstOrDefault();

                    Assert.That(order, Is.Not.Null);
                    Assert.That(order.OrderDate.Value.Date, Is.EqualTo(updatedDate.Date));
                    Assert.That(order.OrderDate.Value.Hour, Is.EqualTo(updatedDate.Hour));
                    Assert.That(order.OrderDate.Value.Minute, Is.EqualTo(updatedDate.Minute));
                    Assert.That(order.OrderDate.Value.Second, Is.EqualTo(updatedDate.Second));
                }
            }
        }
Esempio n. 10
0
        public void Commit_Scope_Calls_Flush_On_UOW_And_Commit_On_Transaction()
        {
            var mockLocator     = MockRepository.GenerateStub <IServiceLocator>();
            var mockUOWFactory  = MockRepository.GenerateMock <IUnitOfWorkFactory>();
            var mockUOW         = MockRepository.GenerateMock <IUnitOfWork>();
            var mockTransaction = MockRepository.GenerateMock <ITransaction>();

            mockLocator.Stub(x => x.GetInstance <IUnitOfWorkFactory>()).Return(mockUOWFactory);
            mockUOWFactory.Expect(x => x.Create()).IgnoreArguments().Return(mockUOW);
            mockUOW.Expect(x => x.BeginTransaction(IsolationLevel.ReadCommitted)).Return(mockTransaction);
            mockUOW.Expect(x => x.Flush());
            mockUOW.Expect(x => x.Dispose());

            mockTransaction.Expect(x => x.Commit());
            mockTransaction.Expect(x => x.Dispose());

            ServiceLocator.SetLocatorProvider(() => mockLocator);

            using (var scope = new UnitOfWorkScope())
            {
                Assert.That(UnitOfWorkScope.HasStarted);
                scope.Commit();
            }

            Assert.That(!UnitOfWorkScope.HasStarted);
            mockUOWFactory.VerifyAllExpectations();
            mockUOW.VerifyAllExpectations();
            mockTransaction.VerifyAllExpectations();
        }
Esempio n. 11
0
        public ProcessInstanceView StartProcessInstance(Guid actorId, Guid processDefinitionId, IDictionary <string, object> attributeValues = null, string transitionName = null)
        {
            ProcessInstance processInstance = null;

            using (var scope = new UnitOfWorkScope(autoCommit: false))
            {
                try
                {
                    var processDefinitionRepository     = ServiceLocator.Current.GetInstance <IRepository <ProcessDefinition> >();
                    ProcessDefinition processDefinition = processDefinitionRepository.With(w => w.Nodes).With(w => w.Attributes).Get(processDefinitionId);

                    var organizationApplication = ServiceLocator.Current.GetInstance <IOrganizationApplication>();
                    var actor = organizationApplication.FindActor(actorId);
                    ExecutionContext executionContext = new ExecutionContext(actor, processDefinition);
                    processInstance = executionContext.StartProcess(attributeValues);

                    Log.Information("actor '" + actor + "' starts an instance of process '" + processDefinition.Name + "'...");

                    var processInstanceRepository = ServiceLocator.Current.GetInstance <IRepository <ProcessInstance> >();
                    processInstanceRepository.Add(processInstance);

                    scope.Commit();

                    var config = new MapperConfiguration(cfg => cfg.CreateMap <ProcessInstance, ProcessInstanceView>());
                    var map    = config.CreateMapper();
                    return(map.Map <ProcessInstanceView>(processInstance));
                }
                catch
                {
                    throw;
                }
            }
        }
        public void can_commit_multiple_db_operations()
        {
            var customer = new Customer { FirstName = "John", LastName = "Doe" };
            var salesPerson = new SalesPerson { FirstName = "Jane", LastName = "Doe", SalesQuota = 2000 };

            using (var scope = new UnitOfWorkScope())
            {
                new EFRepository<Customer>().Add(customer);
                new EFRepository<SalesPerson>().Add(salesPerson);
                scope.Commit();
            }

            using (var ordersTestData = new EFTestData(OrdersContextProvider()))
            using (var hrTestData = new EFTestData(HRContextProvider()))
            {
                Customer savedCustomer = null;
                SalesPerson savedSalesPerson = null;
                ordersTestData.Batch(action => savedCustomer = action.GetCustomerById(customer.CustomerID));
                hrTestData.Batch(action => savedSalesPerson = action.GetSalesPersonById(salesPerson.Id));

                Assert.That(savedCustomer, Is.Not.Null);
                Assert.That(savedSalesPerson, Is.Not.Null);
                Assert.That(savedCustomer.CustomerID, Is.EqualTo(customer.CustomerID));
                Assert.That(savedSalesPerson.Id, Is.EqualTo(salesPerson.Id));
            }
        }
Esempio n. 13
0
        /// <summary>
        /// Промена на Администратор во Институција во неактивен
        /// </summary>
        /// <returns></returns>
        protected override ActionResult Delete()
        {
            try
            {
                using (var scope = new UnitOfWorkScope())
                {
                    BackendUser currentUser = _backendUserRepository.Get(Convert.ToInt32(GridModel.Id));

                    var user = _userRepository.GetUserByUsername(GridModel.UserName);
                    if (user != null && currentUser.Id != user.Id)
                    {
                        throw new DuplicateKeyException();
                    }

                    currentUser.IsActive = false;

                    _backendUserRepository.Update(currentUser);
                    scope.Commit();
                }

                return(Json(GridModel));
            }
            catch (DuplicateKeyException)
            {
                ModelState.AddModelError(string.Empty, string.Format("User with username {0} already exists in the system.", GridModel.UserName));
            }
            throw CreateModelException(GridModel);
        }
Esempio n. 14
0
        public Task RemoveFromRoleAsync(AbpUser user, string roleName)
        {
            return(Task.Factory.StartNew(
                       () =>
            {
                using (var uow = new UnitOfWorkScope())
                {
                    var query =
                        from userRole in _userRoleRepository.GetAll()
                        join role in _roleRepository.GetAll() on userRole.RoleId equals role.Id
                        where userRole.UserId == user.Id && role.Name == roleName
                        select userRole;

                    var searchedUserRole = query.FirstOrDefault();

                    if (searchedUserRole == null)
                    {
                        return;
                    }

                    _userRoleRepository.Delete(searchedUserRole);

                    uow.Commit();
                }
            }));
        }
        public void Can_attach_modified_entity()
        {
            var customer = new Customer
            {
                FirstName = "John",
                LastName = "Doe"
            };

            var context = (OrderEntities) OrdersContextProvider();
            context.AddToCustomers(customer);
            #if EF_1_0
            context.SaveChanges(true);
            #else
            context.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
            #endif
            context.Detach(customer);
            context.Dispose();

            using (var scope = new UnitOfWorkScope())
            {
                customer.LastName = "Changed";
                var repository = new EFRepository<Customer>();
                repository.Attach(customer);
                scope.Commit();
            }

            using (var testData = new EFTestData(OrdersContextProvider()))
            {
                Customer savedCustomer = null;
                testData.Batch(x => savedCustomer = x.GetCustomerById(customer.CustomerID));
                Assert.That(savedCustomer, Is.Not.Null);
                Assert.That(savedCustomer.LastName, Is.EqualTo("Changed"));
            }
        }
Esempio n. 16
0
 public virtual void ChangePassword(Guid id, string oldPassword, string newPassword)
 {
     using (var scope = new UnitOfWorkScope())
     {
         _userAccountService.ChangePassword(id,oldPassword,newPassword);
         scope.Commit();
     }
 }
Esempio n. 17
0
 public void CancelVerification(string key, out bool accountClosed)
 {
     using (var scope = new UnitOfWorkScope())
     {
         _userAccountService.CancelVerification(key,out accountClosed);
         scope.Commit();
     }
 }
Esempio n. 18
0
 public bool ChangePasswordFromResetKey(string key, string newPassword, out NhUserAccount account)
 {
     bool success;
     using (var scope = new UnitOfWorkScope())
     {
         success=_userAccountService.ChangePasswordFromResetKey(key,newPassword,out account);
         scope.Commit();
     }
     return success;
 }
Esempio n. 19
0
        public virtual void AddUsersToRoles(List<Guid> userId, List<string> roleName)
        {
            if (userId == null || userId.Count == 0 || roleName == null || roleName.Count == 0)
                return;
            StringBuilder message=new StringBuilder();
            var users = _userRepository.Query.Where(x => userId.Contains(x.ID)).ToList();
            var roles = _roleRepository.Query.Where(x => roleName.Contains(x.Name)).ToList();
            foreach (var userEntity in users)
            {
                if (userEntity.Roles != null && userEntity.Roles.Any())
                {
                    var newRoles = roles.Except(userEntity.Roles);

                    foreach (var role in newRoles)
                        userEntity.Roles.Add(role);
                    if(newRoles!=null && newRoles.Count()>0)
                        message.AppendFormat("User {0} is added to role(s) {1}.",userEntity.Username,string.Join(",", newRoles.Select(x => x.Name)));
                }
                else
                {
                    foreach (var role in roles)
                        userEntity.Roles.Add(role);
                    if(roles!=null && roles.Count()>0)
                        message.AppendFormat("User {0} is added to role(s) {1}.",userEntity.Username,string.Join(",", roles.Select(x => x.Name)));
                }
                using (var scope = new UnitOfWorkScope())
                {
                    _userRepository.Update(userEntity);
                    scope.Commit();
                }
            }
            foreach (var uid in userId)
            {
                if (!users.Any(u => u.ID == uid))
                {
                    var user = _userRepository.Query.Where(x => x.ID == uid).SingleOrDefault();
                    if (user != null)
                    {
                        user.Roles = roles;
                        using (var scope = new UnitOfWorkScope())
                        {
                            _userRepository.Update(user);
                            scope.Commit();
                        }
                        if(roles!=null && roles.Count()>0)
                            message.AppendFormat("User {0} is added to role(s) {1}.",user.Username,string.Join(",", roles.Select(x => x.Name)));
                    }
                }
            }
            if (message.Length > 0)
            {
                ActivityLog item = new ActivityLog(ActivityType.AddUserToRole.ToString(), message.ToString());
                _activityLogService.Add(item);
            }
        }
Esempio n. 20
0
        public JsonResult SetSelectedUserForPos(int posId, List <int> selectedUsers)
        {
            using (var scope = new UnitOfWorkScope())
            {
                //Get The User
                var pos = _posRepository.Get(posId);

                if (pos != null)
                {
                    //Get All Users
                    var allUsers = _userRepository.GetAll();
                    var user     = pos.Users;

                    //Find New Elements
                    var forAdd = (from s in selectedUsers
                                  where !user.Select(x => x.Id)
                                  .Contains(s)
                                  select s)
                                 .ToList();

                    //Add New
                    foreach (var selectedU in forAdd)
                    {
                        var userNew = allUsers.FirstOrDefault(x => x.Id == selectedU);
                        try
                        {
                            pos.AddUser(userNew);
                        }
                        catch (Exception)
                        {
                        }
                    }

                    //Find For Remove
                    var forRemove = pos.Users
                                    .Where(ext => !selectedUsers
                                           .Contains(ext.Id))
                                    .ToList();
                    foreach (var ext in forRemove)
                    {
                        pos.RemoveUser(ext);
                    }
                }
                else
                {
                    //Remove All Elements
                    pos.Users.RemoveAll();
                }
                //Update
                _posRepository.Update(pos);
                scope.Commit();
            }
            return(Json(true));
        }
Esempio n. 21
0
        public void Delete_Deletes_Record()
        {
            //Adding a dummy record.
            var newAddress = new Address
            {
                StreetAddress1 = "This record was inserted for deletion",
                City           = "Fictional city",
                State          = "LA",
                ZipCode        = "12345"
            };

            var newCustomer = new Customer
            {
                FirstName = ("John_DELETE_ME_" + DateTime.Now),
                LastName  = ("Doe_DELETE_ME_" + DateTime.Now),
                Address   = newAddress
            };

            //Re-usable query to query for the matching record.
            var queryForCustomer = new Func <NHRepository <Customer>, Customer>
                                       (x => (from cust in x
                                              where cust.FirstName == newCustomer.FirstName && cust.LastName == newCustomer.LastName
                                              select cust).FirstOrDefault()
                                       );

            using (var scope = new UnitOfWorkScope())
            {
                var customerRepository = new NHRepository <Customer>();
                var recordCheckResult  = queryForCustomer(customerRepository);
                Assert.That(recordCheckResult, Is.Null);

                customerRepository.Add(newCustomer);
                scope.Commit();
            }

            //Retrieve the record for deletion.
            using (var scope = new UnitOfWorkScope())
            {
                var customerRepository = new NHRepository <Customer>();
                var customerToDelete   = queryForCustomer(customerRepository);
                Assert.That(customerToDelete, Is.Not.Null);
                customerRepository.Delete(customerToDelete);
                scope.Commit();
            }

            //Ensure customer record is deleted.
            using (new UnitOfWorkScope())
            {
                var customerRepository = new NHRepository <Customer>();
                var recordCheckResult  = queryForCustomer(customerRepository);
                Assert.That(recordCheckResult, Is.Null);
            }
        }
Esempio n. 22
0
        public void Delete_Deletes_Record()
        {
            //Adding a dummy record.
            var newAddress = new Address
            {
                StreetAddress1 = "This record was inserted for deletion",
                City = "Fictional city",
                State = "LA",
                ZipCode = "12345"
            };

            var newCustomer = new Customer
            {
                FirstName = ("John_DELETE_ME_" + DateTime.Now),
                LastName = ("Doe_DELETE_ME_" + DateTime.Now),
                Address = newAddress
            };

            //Re-usable query to query for the matching record.
            var queryForCustomer = new Func<NHRepository<Customer>, Customer>
                (x => (from cust in x
                       where cust.FirstName == newCustomer.FirstName && cust.LastName == newCustomer.LastName
                       select cust).FirstOrDefault()
                );

            using (var scope = new UnitOfWorkScope())
            {
                var customerRepository = new NHRepository<Customer>();
                var recordCheckResult = queryForCustomer(customerRepository);
                Assert.That(recordCheckResult, Is.Null);

                customerRepository.Add(newCustomer);
                scope.Commit();
            }

            //Retrieve the record for deletion.
            using (var scope = new UnitOfWorkScope())
            {
                var customerRepository = new NHRepository<Customer>();
                var customerToDelete = queryForCustomer(customerRepository);
                Assert.That(customerToDelete, Is.Not.Null);
                customerRepository.Delete(customerToDelete);
                scope.Commit();
            }

            //Ensure customer record is deleted.
            using (new UnitOfWorkScope())
            {
                var customerRepository = new NHRepository<Customer>();
                var recordCheckResult = queryForCustomer(customerRepository);
                Assert.That(recordCheckResult, Is.Null);
            }
        }
        //public virtual bool Exists(string name)
        //{
        //    if (string.IsNullOrEmpty(name))
        //        throw new ArgumentNullException("name");
        //    int count = _repository.Query.Where(x => x.Name == name.Trim()).Count();
        //    return count > 0 ? true : false;
        //}
        /// <summary>
        /// Adds a item
        /// </summary>
        /// <param name="item">item</param>
        public virtual void Add(ActivityLog item)
        {
            if (item == null)
                throw new ArgumentNullException("item");
            using (var scope = new UnitOfWorkScope())
            {
                _repository.Add(item);
                scope.Commit();
            }

            //event notification
            _eventPublisher.EntityInserted(item);
        }
Esempio n. 24
0
        public void Should_raise_commit_signal_when_commit_called()
        {
            var scopeId = Guid.Empty;

            _transactionManager.ScopeCommitAction = committingScope => committingScope.Complete();
            using (var scope = new UnitOfWorkScope())
            {
                scopeId = scope.ScopeId;
                scope.Commit();
            }
            Assert.That(_transactionManager.CommitCount(scopeId), Is.EqualTo(1));
            Assert.That(_transactionManager.RollbackCount(scopeId), Is.EqualTo(0));
        }
Esempio n. 25
0
        public void Should_not_attempt_auto_commit_if_explicitly_comitted()
        {
            var scopeId = Guid.Empty;

            _transactionManager.ScopeCommitAction = scope => scope.Complete();
            using (var scope = new UnitOfWorkScope())
            {
                scopeId = scope.ScopeId;
                scope.Commit();
            }
            Assert.That(_transactionManager.CommitCount(scopeId), Is.EqualTo(1));
            Assert.That(_transactionManager.RollbackCount(scopeId), Is.EqualTo(0));
        }
        public void Can_perform_simple_query()
        {
            var      testData = new EFTestData(Context);
            Customer customer = null;

            testData.Batch(x => customer = x.CreateCustomer());
            using (var scope = new UnitOfWorkScope())
            {
                var savedCustomer = new EFRepository <Customer>()
                                    .First(x => x.CustomerID == customer.CustomerID);
                Assert.That(savedCustomer, Is.Not.Null);
                scope.Commit();
            }
        }
        public void when_ambient_transaction_is_running_and_a_previous_scope_rollsback_new_scope_still_works()
        {
            using (var testData = new NHTestDataGenerator(Factory.OpenSession()))
            {
                testData.Batch(actions => actions.CreateCustomer());

                string oldCustomerName;
                var    newCustomerName = "NewCustomer" + new Random().Next(0, int.MaxValue);
                var    newCustomer     = new Customer
                {
                    FirstName = newCustomerName,
                    LastName  = "Save",
                    Address   = new Address
                    {
                        StreetAddress1 = "This record was inserted via a test",
                        City           = "Fictional City",
                        State          = "LA",
                        ZipCode        = "00000"
                    }
                };

                using (var ambientScope = new TransactionScope())
                {
                    using (var firstUOW = new UnitOfWorkScope())
                    {
                        var customer = new NHRepository <Customer>().First();
                        oldCustomerName    = customer.FirstName;
                        customer.FirstName = "Changed";
                    }  //Rollback

                    using (var secondUOW = new UnitOfWorkScope())
                    {
                        new NHRepository <Customer>().Add(newCustomer);
                        secondUOW.Commit();
                    }
                }

                using (var scope = new UnitOfWorkScope())
                {
                    var repository = new NHRepository <Customer>();
                    Assert.That(repository.First().FirstName, Is.EqualTo(oldCustomerName));
                    Assert.That(repository.Where(x => x.FirstName == newCustomerName).Count(), Is.GreaterThan(0));
                    repository.Attach(newCustomer);
                    repository.Delete(newCustomer);
                    scope.Commit();
                }
            }
        }
        public void Can_modify()
        {
            Customer customer = null;
            var      testData = new EFTestData(Context);

            testData.Batch(x => customer = x.CreateCustomer());
            using (var scope = new UnitOfWorkScope())
            {
                var savedCustomer = new EFRepository <Customer>()
                                    .First(x => x.CustomerID == customer.CustomerID);
                savedCustomer.FirstName = "Changed";
                scope.Commit();
            }

            testData.Refresh(customer);
            Assert.That(customer.FirstName, Is.EqualTo("Changed"));
        }
Esempio n. 29
0
        public void DeployProcessArchive(string path)
        {
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.Load(path);
            using (var scope = new UnitOfWorkScope())
            {
                ProcessDefinitionCreationContext creationContext = new ProcessDefinitionCreationContext();
                ProcessDefinition processDefinition = creationContext.CreateProcessDefinition(xmlDocument);
                creationContext.ResolveReferences();

                var processBlockRepository = ServiceLocator.Current.GetInstance <IRepository <ProcessBlock> >();
                processBlockRepository.Add(processDefinition);

                scope.Commit();
            }
        }
        public virtual bool Delete(Guid id)
        {
            if (id == default(Guid))
                throw new ArgumentNullException("id");
            ActivityLog item = _repository.Query.FirstOrDefault(x => x.Id == id);
            if (item == null)
                return false;
            using (var scope = new UnitOfWorkScope())
            {
                _repository.Delete(item);
                scope.Commit();
            }

            //event notification
            _eventPublisher.EntityDeleted(item);
            return true;
        }
Esempio n. 31
0
        /// <summary>
        /// Додава нова PublicUser
        /// </summary>
        /// <returns></returns>
        protected override ActionResult Add()
        {
            try
            {
                if (ModelState.IsValid)
                {
                    User newUser;
                    //SendWelcomeEmailToUserViewModel sendWelcomeEmailToUserViewModel;
                    using (var scope = new UnitOfWorkScope())
                    {
                        var user = _userRepository.GetUserByUsername(GridModel.UserName);
                        if (user != null)
                        {
                            throw new DuplicateKeyException();
                        }

                        //Generate the Password
                        string password    = new PasswordGenerator().Generate();
                        string passwordEnc = password.Md5String();

                        //Create new User
                        var lang = _langRepository.Get(GridModel.PreferedLanguage);

                        newUser          = new User(GridModel.UserName, passwordEnc, GridModel.FirstName, GridModel.LastName, lang);
                        newUser.IsActive = GridModel.IsActive;
                        var role = _roleRepository.GetRoleByName(Roles.PublicUser);
                        newUser.AddToRole(role);

                        _userRepository.Save(newUser);
                        scope.Commit();
                    }

                    ////Send Welcome email to created administrator
                    //sendWelcomeEmailToUserViewModel.To = newUser.UserName;
                    //MailService.SendWelcomeEmailToUser(sendWelcomeEmailToUserViewModel);

                    return(Json(GridModel));
                }
            }
            catch (DuplicateKeyException)
            {
                ModelState.AddModelError(string.Empty, string.Format("Корисникот со корисничко име {0} веќе постои во системот.", GridModel.UserName));
            }
            throw CreateModelException(GridModel);
        }
Esempio n. 32
0
        public void Save_New_Customer_Saves_Customer_When_UnitOfWork_Is_Committed()
        {
            var newAddress = new Address
            {
                StreetAddress1 = "This record was inserted via a test",
                City           = "Fictional city",
                State          = "LA",
                ZipCode        = "12345"
            };

            var newCustomer = new Customer
            {
                FirstName = ("John_" + DateTime.Now),
                LastName  = ("Doe_" + DateTime.Now),
                Address   = newAddress
            };

            var queryForCustomer = new Func <NHRepository <Customer>, Customer>
                                   (
                x => (from cust in x
                      where cust.FirstName == newCustomer.FirstName && cust.LastName == newCustomer.LastName
                      select cust).FirstOrDefault()
                                   );

            using (var scope = new UnitOfWorkScope())
            {
                var customerRepository = new NHRepository <Customer>();
                var recordCheckResult  = queryForCustomer(customerRepository);
                Assert.That(recordCheckResult, Is.Null);

                customerRepository.Add(newCustomer);
                scope.Commit();
            }

            //Starting a completely new unit of work and repository to check for existance.
            using (var scope = new UnitOfWorkScope())
            {
                var customerRepository = new NHRepository <Customer>();
                var recordCheckResult  = queryForCustomer(customerRepository);
                Assert.That(recordCheckResult, Is.Not.Null);
                Assert.That(recordCheckResult.FirstName, Is.EqualTo(newCustomer.FirstName));
                Assert.That(recordCheckResult.LastName, Is.EqualTo(newCustomer.LastName));
                scope.Commit();
            }
        }
Esempio n. 33
0
        public ActionResult Profile(ProfileViewModel model)
        {
            bool succeed = false;

            if (ModelState.IsValid)
            {
                if (CurrentUser.Password != model.Password.Md5String())
                {
                    ModelState.AddModelError("Password", "Лозинката мора да биде иста со претходната");
                }
                else
                {
                    using (var scope = new UnitOfWorkScope())
                    {
                        var user = _repository.GetUserByUsername(CurrentUser.UserName);
                        user.SetPassword(model.NewPassword.Md5String());

                        scope.Commit();
                    }
                    succeed = true;
                    this.ShowMessage(MessageType.Success, "Лозинката е успешно променета.", true);
                }
            }

            model.UserName  = CurrentUser.UserName;
            model.FirstName = CurrentUser.FirstName;
            model.LastName  = CurrentUser.LastName;
            //var backendUser = CurrentUser as BackendUser;
            //if (backendUser != null)
            //{
            //    model.Institution = ResourceManager.GetMultilangValue(backendUser.Institution.Name);
            //}

            //if (CurrentUser.CertificateRawBytes != null)
            //{
            //    ViewBag.hasCertificate = CurrentUser.CertificateRawBytes.ToString();
            //    ViewBag.CertificateDateUntil = CurrentUser.CertificateDateUntil;
            //}
            //else
            //{
            //    ViewBag.hasCertificate = string.Empty;
            //}
            ViewBag.ChangePass = !succeed;
            return(View("Profile", model));
        }
Esempio n. 34
0
        /// <summary>
        /// Adds a item
        /// </summary>
        /// <param name="item">item</param>
        public virtual void Add(ScheduleTask item)
        {
            if (item == null)
                throw new ArgumentNullException("item");
            using (var scope = new UnitOfWorkScope())
            {
                _repository.Add(item);
                scope.Commit();
            }

            //event notification
            _eventPublisher.EntityInserted(item);
            TaskManager.Instance.Refresh();
            StringBuilder message = new StringBuilder();
            message.AppendFormat("Task {0} is created.", item.Name);
            ActivityLog activityItem = new ActivityLog(ActivityType.AddTask.ToString(), message.ToString());
            _activityLogService.Add(activityItem);
        }
        public void can_commit()
        {
            var customer = new Customer
            {
                FirstName = "John",
                LastName = "Doe"
            };
            using (var scope = new UnitOfWorkScope())
            {
                new EFRepository<Customer,int>()
                    .Add(customer);
                scope.Commit();
            }

            var savedCustomer = new EFRepository<Customer, int>().Query
                .First(x => x.CustomerID == customer.CustomerID);
            Assert.IsNotNull(savedCustomer);
        }
        public void NHUOW_Issue_6_Replication()
        {
            var readCustomerFunc = new Func <Customer>(() =>
            {
                using (var scope = new UnitOfWorkScope())
                {
                    var customer = new NHRepository <Customer>().First();
                    scope.Commit();
                    return(customer);
                }
            });

            var updateCustomerFunc = new Func <Customer, Customer>(customer =>
            {
                using (var scope = new UnitOfWorkScope())
                {
                    var repository = new NHRepository <Customer>();
                    repository.Attach(customer);
                    scope.Commit();
                    return(customer);
                }
            });

            var newCustomerName = "Changed" + new Random().Next(0, int.MaxValue);

            using (var testData = new NHTestDataGenerator(Factory.OpenSession()))
            {
                testData.Batch(actions => actions.CreateCustomer());

                using (var masterScope = new UnitOfWorkScope())
                {
                    using (var childScope = new UnitOfWorkScope(UnitOfWorkScopeTransactionOptions.CreateNew))
                    {
                        var customer = readCustomerFunc();
                        customer.FirstName = newCustomerName;
                        updateCustomerFunc(customer);
                        childScope.Commit();
                    }
                } //Rollback

                var checkCustomer = readCustomerFunc();
                Assert.That(checkCustomer.FirstName, Is.EqualTo(newCustomerName));
            }
        }
Esempio n. 37
0
        public void Nested_UnitOfWork_With_Different_Transaction_Compatibility_Works()
        {
            var changedShipDate  = DateTime.Now.AddDays(1);
            var changedOrderDate = DateTime.Now.AddDays(2);

            using (var testData = new LinqToSqlDataGenerator(new TestDataDataContext {
                Log = Console.Out
            }))
            {
                testData.Batch(actions =>
                               actions.CreateOrderForCustomer(actions.CreateCustomer()));

                int orderId;
                using (new UnitOfWorkScope())
                {
                    var ordersRepository = new LinqToSqlRepository <Order>();
                    orderId = ordersRepository.Select(x => x.OrderID).First();
                }

                Assert.NotNull(orderId);
                using (new UnitOfWorkScope())
                {
                    var outerRepository = new LinqToSqlRepository <Order>();
                    var outerOrder      = outerRepository.Where(x => x.OrderID == orderId).First();
                    outerOrder.OrderDate = changedOrderDate;

                    using (var innerScope = new UnitOfWorkScope(UnitOfWorkScopeTransactionOptions.CreateNew))
                    {
                        var innerRepository = new LinqToSqlRepository <Order>();
                        var innerOrder      = innerRepository.Where(x => x.OrderID == orderId).First();
                        innerOrder.ShipDate = changedShipDate;
                        innerScope.Commit();
                    }
                }

                using (new UnitOfWorkScope())
                {
                    var ordersRepository = new LinqToSqlRepository <Order>();
                    var order            = ordersRepository.First();
                    Assert.That(order.OrderDate, Is.Not.EqualTo(changedOrderDate));
                    Assert.That(order.ShipDate, Is.Not.EqualTo(changedShipDate));
                }
            }
        }
Esempio n. 38
0
        public void Should_Call_Uow_Methods()
        {
            var fakeUow = Substitute.For <IUnitOfWork>();

            LocalIocManager.IocContainer.Register(
                Component.For <IUnitOfWork>().UsingFactoryMethod(() => fakeUow).LifestyleTransient()
                );

            using (var unitOfWorkScope = new UnitOfWorkScope(LocalIocManager))
            {
                fakeUow.Received(1).Initialize(true);
                fakeUow.Received(1).Begin();

                unitOfWorkScope.Commit();
            }

            fakeUow.Received(1).End();
            fakeUow.Received(1).Dispose();
        }
Esempio n. 39
0
        /// <summary>
        /// Бришењ на masterUser
        /// </summary>
        /// <returns></returns>
        protected override ActionResult Delete()
        {
            try
            {
                using (var scope = new UnitOfWorkScope())
                {
                    var user = _userRepository.Get(Convert.ToInt32(GridModel.Id));
                    user.IsActive = false;
                    _userRepository.Update(user);

                    scope.Commit();
                }
                return(new EmptyResult());
            }
            catch (Exception)
            {
                throw CreateModelException(GridModel);
            }
        }
Esempio n. 40
0
        /// <summary>
        /// Бришењ на POS
        /// </summary>
        /// <returns></returns>
        protected override ActionResult Delete()
        {
            try
            {
                using (var scope = new UnitOfWorkScope())
                {
                    var pos = _posRepository.Get(Convert.ToInt32(GridModel.Id));
                    pos.SetIsActive(GridModel.IsActive);
                    _posRepository.Update(pos);

                    scope.Commit();
                }
                return(new EmptyResult());
            }
            catch (Exception)
            {
                throw CreateModelException(GridModel);
            }
        }
        public void NHUOW_Issue_6_Replication()
        {
            var readCustomerFunc = new Func<Customer>(() =>
            {
                using (var scope = new UnitOfWorkScope())
                {
                    var customer = new NHRepository<Customer>().First();
                    scope.Commit();
                    return customer;
                }
            });

            var updateCustomerFunc = new Func<Customer, Customer>(customer =>
            {
                using (var scope = new UnitOfWorkScope())
                {
                    var repository = new NHRepository<Customer>();
                    repository.Attach(customer);
                    scope.Commit();
                    return customer;
                }
            });

            var newCustomerName = "Changed" + new Random().Next(0, int.MaxValue);
            using (var testData = new NHTestDataGenerator(Factory.OpenSession()))
            {
                testData.Batch(actions => actions.CreateCustomer());

                using (var masterScope = new UnitOfWorkScope())
                {
                    using (var childScope = new UnitOfWorkScope(UnitOfWorkScopeTransactionOptions.CreateNew))
                    {
                        var customer = readCustomerFunc();
                        customer.FirstName = newCustomerName;
                        updateCustomerFunc(customer);
                        childScope.Commit();
                    }
                } //Rollback

                var checkCustomer = readCustomerFunc();
                Assert.That(checkCustomer.FirstName, Is.EqualTo(newCustomerName));
            }
        }
Esempio n. 42
0
        public void Lazyloading_when_outside_scope_throws()
        {
            using (var testData = new EFTestData(OrdersContextProvider()))
            {
                Order order = null;
                testData.Batch(x => order = x.CreateOrderForCustomer(x.CreateCustomer()));

                Order savedOrder;
                using (var scope = new UnitOfWorkScope())
                {
                    savedOrder = new EFRepository <Order>()
                                 .Where(x => x.OrderID == order.OrderID)
                                 .First();
                    scope.Commit();
                }
                Assert.That(savedOrder, Is.Not.Null);
                Assert.Throws <ObjectDisposedException>(() => { var customer = savedOrder.Customer; });
            }
        }
Esempio n. 43
0
        public void Save_Does_Not_Save_New_Customer_When_UnitOfWork_Is_Aborted()
        {
            var rnd        = new Random();
            var newAddress = new Address
            {
                StreetAddress1 = "This record was inserted via a test",
                City           = "Fictional city",
                State          = "LA",
                ZipCode        = "12345"
            };

            var newCustomer = new Customer
            {
                FirstName = ("John_" + rnd.Next(60000, 80000)),
                LastName  = ("Doe_" + rnd.Next(60000, 80000)),
                Address   = newAddress
            };

            using (new UnitOfWorkScope())
            {
                var customerRepository = new NHRepository <Customer>();
                var recordCheckResult  = (from cust in customerRepository
                                          where cust.FirstName == newCustomer.FirstName &&
                                          cust.LastName == newCustomer.LastName
                                          select cust).FirstOrDefault();
                Assert.That(recordCheckResult, Is.Null);

                customerRepository.Add(newCustomer);
                //DO NOT CALL COMMIT TO SIMMULATE A ROLLBACK.
            }

            //Starting a completely new unit of work and repository to check for existance.
            using (var scope = new UnitOfWorkScope())
            {
                var customerRepository = new NHRepository <Customer>();
                var recordCheckResult  = (from cust in customerRepository
                                          where cust.FirstName == newCustomer.FirstName &&
                                          cust.LastName == newCustomer.LastName
                                          select cust).FirstOrDefault();
                Assert.That(recordCheckResult, Is.Null);
                scope.Commit();
            }
        }
        protected override ActionResult Delete()
        {
            try
            {
                using (var scope = new UnitOfWorkScope())
                {
                    Localization entity = _repository.Get(Convert.ToInt32(GridModel.Id));
                    _repository.Delete(entity);

                    scope.Commit();
                }

                return(new EmptyResult());
            }
            catch (Exception)
            {
                throw CreateModelException(GridModel);
            }
        }
Esempio n. 45
0
        /// <summary>
        /// Додава нов POS
        /// </summary>
        /// <returns></returns>
        protected override ActionResult Add()
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Pos newPos;
                    using (var scope = new UnitOfWorkScope())
                    {
                        var user = _posRepository.GetPosByName(GridModel.PosName);
                        if (user != null)
                        {
                            throw new DuplicateKeyException();
                        }

                        //Create new Pos
                        newPos = new Pos(GridModel.PosName)
                        {
                            Phone                   = GridModel.Phone,
                            PrimaryContact          = GridModel.PrimaryContact,
                            AdditionalEmailAdresses = GridModel.AdditionalEmailAdresses
                        };
                        newPos.SetIsActive(GridModel.IsActive);

                        //Save It
                        _posRepository.Save(newPos);
                        scope.Commit();
                    }

                    ////Send Welcome email to created administrator
                    //sendWelcomeEmailToUserViewModel.To = newUser.UserName;
                    //MailService.SendWelcomeEmailToUser(sendWelcomeEmailToUserViewModel);

                    return(Json(GridModel));
                }
            }
            catch (DuplicateKeyException)
            {
                ModelState.AddModelError(string.Empty, string.Format("Pos со име {0} веќе постои во системот.", GridModel.PosName));
            }
            throw CreateModelException(GridModel);
        }
        public void Can_delete()
        {
            Customer customer = null;
            var testData = new EFTestData(Context);
            testData.Batch(x => customer = x.CreateCustomer());
            using (var scope = new UnitOfWorkScope())
            {
                var repository = new EFRepository<Customer,int>();
                var savedCustomer = repository.Query.First(x => x.CustomerID == customer.CustomerID);
                repository.Delete(savedCustomer);
                scope.Commit();
            }

            using (var scope = new UnitOfWorkScope())
            {
                var repository = new EFRepository<Customer,int>();
                Assert.IsNull(repository.Query.FirstOrDefault(x => x.CustomerID == customer.CustomerID));
                scope.Commit();
            }
        }
        public void Can_attach()
        {
            Customer customer = null;
            var testData = new EFTestData(Context);
            testData.Batch(x => customer = x.CreateCustomer());
            testData.Context.Detach(customer);
            Context.Dispose();

            using (var scope = new UnitOfWorkScope())
            {
                var repository = new EFRepository<Customer,int>();
                repository.Attach(customer);
                customer.FirstName = "Changed";
                scope.Commit();
            }

            testData = new EFTestData(Context);
            customer = testData.Get<Customer>(x => x.CustomerID == customer.CustomerID);
            Assert.AreEqual(customer.FirstName, "Changed");
        }
        public void changes_are_not_persisted_when_ambient_transaction_rolls_back()
        {
            using (var testData = new NHTestDataGenerator(Factory.OpenSession()))
            {
                testData.Batch(actions => actions.CreateCustomer());
                using (var ambientScope = new TransactionScope())
                {
                    using (var scope = new UnitOfWorkScope())
                    {
                        var customer = new NHRepository<Customer>().First();
                        customer.FirstName = "Changed";
                        scope.Commit();
                    }
                } //Auto rollback

                using (var scope = new UnitOfWorkScope())
                {
                    var customer = new NHRepository<Customer>().First();
                    Assert.That(customer.FirstName, Is.Not.EqualTo("Changed"));
                }
            }
        }
        public void Can_eager_fetch()
        {
            var testData = new EFTestData(Context);

            Order order = null;
            Order savedOrder = null;

            testData.Batch(x => order = x.CreateOrderForCustomer(x.CreateCustomer()));

            using (var scope = new UnitOfWorkScope())
            {
                savedOrder = new EFRepository<Order,int>()
                    .Fetch(o => o.Customer).Query
                    .Where(x => x.OrderID == order.OrderID)
                    .SingleOrDefault();
                scope.Commit();
            }

            Assert.IsNotNull(savedOrder);
            Assert.IsNotNull(savedOrder.Customer);
            var firstName = savedOrder.Customer.FirstName;
        }
        public void can_commit()
        {
            var customer = new Customer
            {
                FirstName = "John",
                LastName = "Doe"
            };
            using (var scope = new UnitOfWorkScope())
            {
                new EFRepository<Customer>()
                    .Add(customer);
                scope.Commit();
            }

            using (var testData = new EFTestData(OrdersContextProvider()))
            {
                Customer savedCustomer = null;
                testData.Batch(action => savedCustomer = action.GetCustomerById(customer.CustomerID));

                Assert.That(savedCustomer, Is.Not.Null);
                Assert.That(savedCustomer.CustomerID, Is.EqualTo(customer.CustomerID));
            }
        }
        public void nested_commit_works()
        {
            var customer = new Customer { FirstName = "Joe", LastName = "Data" };
            var order = new Order { OrderDate = DateTime.Now, ShipDate = DateTime.Now };
            using (var scope = new UnitOfWorkScope())
            {
                new EFRepository<Customer>().Add(customer);
                using (var scope2 = new UnitOfWorkScope())
                {
                    new EFRepository<Order>().Add(order);
                    scope2.Commit();
                }
                scope.Commit();
            }

            using (var testData = new EFTestData(OrdersContextProvider()))
            {
                Customer savedCustomer = null;
                Order savedOrder = null;
                testData.Batch(actions =>
                {
                    savedCustomer = actions.GetCustomerById(customer.CustomerID);
                    savedOrder = actions.GetOrderById(order.OrderID);
                });

                Assert.That(savedCustomer, Is.Not.Null);
                Assert.That(savedCustomer.CustomerID, Is.EqualTo(customer.CustomerID));
                Assert.That(savedOrder, Is.Not.Null);
                Assert.That(savedOrder.OrderID, Is.EqualTo(order.OrderID));
            }
        }
 protected void RemovePermissionsFromRole(List<Permission> permissions, Role role, Func<ICollection<Permission>, Permission, ICollection<Permission>> changePermission)
 {
     if (permissions == null || permissions.Count == 0 || role == null)
         return;
     StringBuilder message = new StringBuilder(), items = new StringBuilder(); ;
     foreach (var perm in permissions)
     {
         if (perm != null)
         {
             if (role.Permissions.Contains<Permission>(perm))
             {
                 changePermission(role.Permissions, perm);
                 items.AppendFormat("{0},", perm.Name);
             }
         }
     }
     using (var scope = new UnitOfWorkScope())
     {
         _roleRepository.Update(role);
         scope.Commit();
     }
     if (items.Length > 0)
     {
         items = items.Remove(items.Length - 1, 1);
         message.AppendFormat("Permission(s) {0} are removed from role {1}.", items.ToString(), role.Name);
         ActivityLog item = new ActivityLog(ActivityType.RemovePermissionFromRole.ToString(), message.ToString());
         _activityLogService.Add(item);
     }
 }
        /// <summary>
        /// Deletes a item
        /// </summary>
        /// <param name="item">item</param>
        public virtual bool Delete(ActivityLog item)
        {
            if (item == null)
                throw new ArgumentNullException("item");
            using (var scope = new UnitOfWorkScope())
            {
                _repository.Delete(item);
                scope.Commit();
            }

            //event notification
            _eventPublisher.EntityDeleted(item);
            return true;
        }
        public void nested_commit_with_seperate_transaction_commits_when_wrapping_scope_rollsback()
        {
            var customer = new Customer { FirstName = "Joe", LastName = "Data" };
            var order = new Order { OrderDate = DateTime.Now, ShipDate = DateTime.Now };
            using (var scope = new UnitOfWorkScope())
            {
                new EFRepository<Customer>().Add(customer);
                using (var scope2 = new UnitOfWorkScope(TransactionMode.New))
                {
                    new EFRepository<Order>().Add(order);
                    scope2.Commit();
                }
            } //Rollback

            using (var testData = new EFTestData(OrdersContextProvider()))
            {
                Customer savedCustomer = null;
                Order savedOrder = null;
                testData.Batch(actions =>
                {
                    savedCustomer = actions.GetCustomerById(customer.CustomerID);
                    savedOrder = actions.GetOrderById(order.OrderID);
                });

                Assert.That(savedCustomer, Is.Null);
                Assert.That(savedOrder, Is.Not.Null);
                Assert.That(savedOrder.OrderID, Is.EqualTo(order.OrderID));
            }
        }
Esempio n. 55
0
        public void Nested_UnitOfWork_With_Different_Transaction_Compatibility_Works()
        {
            var changedShipDate = DateTime.Now.AddDays(1);
            var changedOrderDate = DateTime.Now.AddDays(2);

            using (var testData = new LinqToSqlDataGenerator(new TestDataDataContext{Log = Console.Out}))
            {
                testData.Batch(actions =>
                               actions.CreateOrderForCustomer(actions.CreateCustomer()));

                int orderId;
                using (new UnitOfWorkScope())
                {
                    var ordersRepository = new LinqToSqlRepository<Order>();
                    orderId = ordersRepository.Select(x => x.OrderID).First();
                }

                Assert.NotNull(orderId);
                using (new UnitOfWorkScope())
                {
                    var outerRepository = new LinqToSqlRepository<Order>();
                    var outerOrder = outerRepository.Where(x => x.OrderID == orderId).First();
                    outerOrder.OrderDate = changedOrderDate;

                    using (var innerScope = new UnitOfWorkScope(UnitOfWorkScopeTransactionOptions.CreateNew))
                    {
                        var innerRepository = new LinqToSqlRepository<Order>();
                        var innerOrder = innerRepository.Where(x => x.OrderID == orderId).First();
                        innerOrder.ShipDate = changedShipDate;
                        innerScope.Commit();
                    }
                }

                using (new UnitOfWorkScope())
                {
                    var ordersRepository = new LinqToSqlRepository<Order>();
                    var order = ordersRepository.First();
                    Assert.That(order.OrderDate, Is.Not.EqualTo(changedOrderDate));
                    Assert.That(order.ShipDate, Is.Not.EqualTo(changedShipDate));
                }
            }
        }
Esempio n. 56
0
        public void UnitOfWork_Is_Rolledback_When_Containing_TransactionScope_Is_Rolledback()
        {
            using (var testData = new LinqToSqlDataGenerator(new TestDataDataContext()))
            {
                testData.Batch(actions =>
                               actions.CreateOrderForCustomer(actions.CreateCustomer()));
                int orderId;
                DateTime? oldDate;

                using (var txScope = new TransactionScope(TransactionScopeOption.Required))
                using (var uowScope = new UnitOfWorkScope(IsolationLevel.Serializable))
                {
                    var ordersRepository = new LinqToSqlRepository<Order>();
                    var order = (from o in ordersRepository
                                 select o).First();

                    oldDate = order.OrderDate;
                    order.OrderDate = DateTime.Now;
                    orderId = order.OrderID;
                    uowScope.Commit();

                }

                using (var uowScope = new UnitOfWorkScope())
                {
                    var ordersRepository = new LinqToSqlRepository<Order>();
                    var order = (from o in ordersRepository
                                 where o.OrderID == orderId
                                 select o).First();

                    Assert.That(order.OrderDate, Is.EqualTo(oldDate));
                }
            }
        }
Esempio n. 57
0
        public void Save_Updates_Existing_Order_Record()
        {
            int orderIDRetrieved;
            var updatedDate = DateTime.Now;

            using (var testData = new LinqToSqlDataGenerator(new TestDataDataContext()))
            {
                testData.Batch(actions =>
                               actions.CreateOrderForCustomer(actions.CreateCustomer()));
                using (var scope = new UnitOfWorkScope())
                {
                    var order = new LinqToSqlRepository<Order>().FirstOrDefault();
                    Assert.That(order, Is.Not.Null);

                    orderIDRetrieved = order.OrderID;
                    order.OrderDate = updatedDate;

                    scope.Commit();
                }

                using (new UnitOfWorkScope())
                {
                    var orderRepository = new LinqToSqlRepository<Order>();
                    var order = (from o in orderRepository
                                 where o.OrderID == orderIDRetrieved
                                 select o).FirstOrDefault();

                    Assert.That(order, Is.Not.Null);
                    Assert.That(order.OrderDate.Value.Date, Is.EqualTo(updatedDate.Date));
                    Assert.That(order.OrderDate.Value.Hour, Is.EqualTo(updatedDate.Hour));
                    Assert.That(order.OrderDate.Value.Minute, Is.EqualTo(updatedDate.Minute));
                    Assert.That(order.OrderDate.Value.Second, Is.EqualTo(updatedDate.Second));
                }
            }
        }
Esempio n. 58
0
        public void Save_New_Customer_Saves_Customer_When_UnitOfWork_Is_Committed()
        {
            var rnd = new Random();
            var newCustomer = new Customer
            {
                FirstName = ("John_" + rnd.Next(0, 30000)),
                LastName = ("Doe_" + rnd.Next(0, 30000)),
                StreetAddress1 = "This record was inserted via a test",
                City = "Fictional city",
                State = "LA",
                ZipCode = "12345"
            };

            var queryForCustomer = new Func<LinqToSqlRepository<Customer>, Customer>
                (
                x => (from cust in x
                      where cust.FirstName == newCustomer.FirstName && cust.LastName == newCustomer.LastName
                      select cust).FirstOrDefault()
                );

            using (var scope = new UnitOfWorkScope())
            {
                var customerRepository = new LinqToSqlRepository<Customer>();
                var recordCheckResult = queryForCustomer(customerRepository);
                Assert.That(recordCheckResult, Is.Null);

                customerRepository.Add(newCustomer);
                scope.Commit();
            }

            //Starting a completely new unit of work and repository to check for existance.
            using (var scope = new UnitOfWorkScope())
            {
                var customerRepository = new LinqToSqlRepository<Customer>();
                var recordCheckResult = queryForCustomer(customerRepository);
                Assert.That(recordCheckResult, Is.Not.Null);
                Assert.That(recordCheckResult.FirstName, Is.EqualTo(newCustomer.FirstName));
                Assert.That(recordCheckResult.LastName, Is.EqualTo(newCustomer.LastName));
                scope.Commit();
            }
        }
Esempio n. 59
0
        public void Save_Does_Not_Save_New_Customer_When_UnitOfWork_Is_Aborted()
        {
            var rnd = new Random();
            var newCustomer = new Customer
            {
                FirstName = ("John_" + rnd.Next(30001, 50000)),
                LastName = ("Doe_" + rnd.Next(30001, 50000)),
                StreetAddress1 = "This record was inserted via a test",
                City = "Fictional city",
                State = "LA",
                ZipCode = "12345"
            };

            using (new UnitOfWorkScope())
            {
                var customerRepository = new LinqToSqlRepository<Customer>();
                var recordCheckResult = (from cust in customerRepository
                                         where cust.FirstName == newCustomer.FirstName &&
                                               cust.LastName == newCustomer.LastName
                                         select cust).FirstOrDefault();
                Assert.That(recordCheckResult, Is.Null);

                customerRepository.Add(newCustomer);
                //DO NOT CALL COMMIT TO SIMMULATE A ROLLBACK.
            }

            //Starting a completely new unit of work and repository to check for existance.
            using (var scope = new UnitOfWorkScope())
            {
                var customerRepository = new LinqToSqlRepository<Customer>();
                var recordCheckResult = (from cust in customerRepository
                                         where cust.FirstName == newCustomer.FirstName &&
                                               cust.LastName == newCustomer.LastName
                                         select cust).FirstOrDefault();
                Assert.That(recordCheckResult, Is.Null);
                scope.Commit();
            }
        }
        public void rollback_does_not_rollback_supressed_scope()
        {
            var customer = new Customer { FirstName = "Joe", LastName = "Data" };
            var order = new Order { OrderDate = DateTime.Now, ShipDate = DateTime.Now };
            using (var scope = new UnitOfWorkScope())
            {
                new EFRepository<Customer>().Add(customer);
                using (var scope2 = new UnitOfWorkScope(TransactionMode.Supress))
                {
                    new EFRepository<Order>().Add(order);
                    scope2.Commit();
                }
            } //Rollback.

            using (var testData = new EFTestData(OrdersContextProvider()))
            {
                Customer savedCustomer = null;
                Order savedOrder = null;
                testData.Batch(actions =>
                {
                    savedCustomer = actions.GetCustomerById(customer.CustomerID);
                    savedOrder = actions.GetOrderById(order.OrderID);
                });

                Assert.That(savedCustomer, Is.Null);
                Assert.That(savedOrder, Is.Not.Null);
            }
        }