示例#1
0
        public async Task CreateNewShip(CoreDddSampleNhibernateConfigurator nhibernateConfigurator)
        {
            using (var unitOfWork = new NhibernateUnitOfWork(nhibernateConfigurator))
            {
                unitOfWork.BeginTransaction();

                var shipRepository = new NhibernateRepository <Ship>(unitOfWork);

                try
                {
                    var createNewShipCommand = new CreateNewShipCommand {
                        ShipName = "lady", Tonnage = 10m
                    };
                    var createNewShipCommandHandler = new CreateNewShipCommandHandler(shipRepository);

                    var generatedShipId = 0;
                    createNewShipCommandHandler.CommandExecuted += args => generatedShipId = (int)args.Args;

                    await createNewShipCommandHandler.ExecuteAsync(createNewShipCommand);

                    Console.WriteLine($"Create new ship command was executed. Generated ship id: {generatedShipId}");

                    await unitOfWork.CommitAsync();
                }
                catch
                {
                    await unitOfWork.RollbackAsync();

                    throw;
                }
            }
        }
示例#2
0
        public async Task <int> CreateNewShipAsync(string shipName, decimal tonnage)
        {
            var createNewShipCommand = new CreateNewShipCommand {
                ShipName = shipName, Tonnage = tonnage
            };

            var generatedShipId = 0;

            _commandExecutor.CommandExecuted += args => generatedShipId = (int)args.Args;

            await _commandExecutor.ExecuteAsync(createNewShipCommand);

            return(generatedShipId);
        }
示例#3
0
        public async Task CreateNewShip()
        {
            var ioCContainer = new WindsorContainer();

            _RegisterComponents(ioCContainer);

            var unitOfWork = ioCContainer.Resolve <NhibernateUnitOfWork>();

            try
            {
                unitOfWork.BeginTransaction();

                try
                {
                    var commandExecutor      = ioCContainer.Resolve <ICommandExecutor>();
                    var createNewShipCommand = new CreateNewShipCommand {
                        ShipName = "lady", Tonnage = 10m
                    };

                    var generatedShipId = 0;
                    commandExecutor.CommandExecuted += args => generatedShipId = (int)args.Args;

                    await commandExecutor.ExecuteAsync(createNewShipCommand);

                    Console.WriteLine($"Create new ship command was executed by command executor resolved from IoC container. Generated ship id: {generatedShipId}");

                    await unitOfWork.CommitAsync();
                }
                catch
                {
                    await unitOfWork.RollbackAsync();

                    throw;
                }
            }
            finally
            {
                ioCContainer.Release(unitOfWork);
            }

            ioCContainer.Dispose();
        }