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; } } }
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); }
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(); }