public RegistrationStateReader(string connectionString)
        {
            DbContextOptionsBuilder optionsBuilder = new DbContextOptionsBuilder();

            optionsBuilder.UseSqlServer(@"Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=RegistrationDemo;Integrated Security=True");
            _sagaDbContext = new SagaDbContext <RegistrationStateInstance, RegistrationStateInstanceMap>(optionsBuilder.Options);
        }
Beispiel #2
0
        public Locating_an_existing_ef_saga()
        {
            // add new migration by calling
            // dotnet ef migrations add --context "SagaDbContext``2" Init  -v
            var contextFactory = new ContextFactory();

            using (SagaDbContext <SimpleSaga, SimpleSagaMap> context = contextFactory.CreateDbContext(Array.Empty <string>()))
            {
                context.Database.Migrate();
            }

            _sagaDbContextFactory = () => contextFactory.CreateDbContext(Array.Empty <string>());
            _sagaRepository       = new Lazy <ISagaRepository <SimpleSaga> >(() =>
                                                                             new EntityFrameworkSagaRepository <SimpleSaga>(_sagaDbContextFactory));
        }
        public Using_ef_connection_resiliency()
        {
            // add new migration by calling
            // dotnet ef migrations add --context "SagaDbContext``2" Init  -v
            var contextFactory = new ContextFactoryWithResilienceStrategy();

            using (SagaDbContext <SimpleSaga, SimpleSagaMap> context = contextFactory.CreateDbContext(Array.Empty <string>()))
            {
                context.Database.Migrate();
            }

            _sagaDbContextFactory = () => contextFactory.CreateDbContext(Array.Empty <string>());
            _sagaRepository       = new Lazy <ISagaRepository <SimpleSaga> >(() =>
                                                                             EntityFrameworkSagaRepository <SimpleSaga> .CreatePessimistic(_sagaDbContextFactory));
        }
Beispiel #4
0
        public DbFixture()
        {
            var configuration = new ConfigurationBuilder()
                                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: false)
                                .AddEnvironmentVariables()
                                .Build();

            var connStr = configuration.GetConnectionString("sql");

            if (string.IsNullOrWhiteSpace(connStr))
            {
                throw new ArgumentException("invalid connection string");
            }

            this.ConnectionString = string.Format(connStr, Guid.NewGuid());

            var options = new DbContextOptionsBuilder <SagaDbContext>()
                          .UseSqlServer(this.ConnectionString)
                          .EnableSensitiveDataLogging()
                          .Options;

            _dbContext = new SagaDbContext(options);
        }
Beispiel #5
0
 public OrderSagaHandler(ISagaCoordinator coordinator, SagaDbContext dbContext)
 {
     _coordinator = coordinator;
     _dbContext   = dbContext;
 }
Beispiel #6
0
        private static void Run()
        {
            ISagaRepository <RegistrationStateInstance> sagaRepository = new EntityFrameworkSagaRepository <RegistrationStateInstance>(SagaDbContextFactory);

            IBusControl busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
            {
                IRabbitMqHost host = cfg.Host(new Uri("rabbitmq://localhost"), h =>
                {
                    h.Username("guest");
                    h.Password("guest");
                });

                EndpointConvention.Map <IProcessRegistration>(new Uri("rabbitmq://localhost/registration.state.queue"));

                cfg.ReceiveEndpoint(host, "registration.state.queue", endpointConfigurator =>
                {
                    endpointConfigurator.PrefetchCount = 16;

                    IPartitioner partitioner = cfg.CreatePartitioner(8);

                    RegistrationStateMachine machine = new RegistrationStateMachine();

                    endpointConfigurator.StateMachineSaga(machine, sagaRepository, sagaConfigurator =>
                    {
                        sagaConfigurator.Message <IRegistrationReceived>(m => m.UsePartitioner(partitioner, p => p.Message.SubmissionId));
                        sagaConfigurator.Message <IRegistrationCompleted>(m => m.UsePartitioner(partitioner, p => p.Message.SubmissionId));
                    });
                });
            });

            busControl.StartAsync();
            ReadKey();

            busControl.StopAsync();

            DbContext SagaDbContextFactory()
            {
                DbContextOptionsBuilder optionsBuilder = new DbContextOptionsBuilder();

                optionsBuilder.UseSqlServer(@"Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=RegistrationDemo;Integrated Security=True");
                SagaDbContext <RegistrationStateInstance, RegistrationStateInstanceMap> context = new SagaDbContext <RegistrationStateInstance, RegistrationStateInstanceMap>(optionsBuilder.Options);

                context.Database.EnsureCreated();
                return(context);
            }
        }