예제 #1
0
        static void Main(string[] args)
        {
            IIdentity bankId;

            using (var uow = new EFCoreUnitOfWork())
            {
                var manager = Manager.Create(uow.Repository.NextIdentity(), "First Last");
                var bank    = Bank.Create(uow.Repository.NextIdentity(), "123 Street", manager, new List <Atm>());
                bankId = bank.Id;
            }

            IIdentity atmId;

            using (var uow = new EFCoreUnitOfWork())
            {
                var createdBank = uow.Repository.GetBankById(bankId);
                var atm         = createdBank.NewAtmInstalled(uow.Repository.NextIdentity(), 5000);
                atmId = atm.Id;
            }

            using (var uow = new EFCoreUnitOfWork())
            {
                var bank = uow.Repository.GetBankById(bankId);
                bank.AtmBalanceChanged(atmId, -1000);

                var updatedBank = uow.Repository.GetBankById(bankId);
            }

            Console.ReadKey();
        }
예제 #2
0
        public void WarningIfCommittedOrAbandoned()
        {
            const string ExpectedMessage = "UnitOfWork must be either completed or abandoned before disposing.";

            logger.Setup(x => x.Error(ExpectedMessage));
            using (var dbContext = new TestDbContext(options))
            {
                var unitOfWork = new EFCoreUnitOfWork <TestDbContext>(dbContext, eventDispatcher.Object, logger.Object);
                unitOfWork.Dispose();

                // Dispose again should not log error twice
                unitOfWork.Dispose();
            }

            logger.Verify(x => x.Error(ExpectedMessage), Times.Once);
        }