Пример #1
0
        protected AdoNetSagaPersister CreatePersister(bool createTables = false)
        {
            var result = new AdoNetSagaPersister(_manager, SagaTableName, SagaIndexTableName, false);

            if (createTables)
            {
                result.EnsureTablesAreCreated();
            }
            return(result);
        }
Пример #2
0
        /// <summary>
        /// Configures Rebus to store sagas in AdoNet.
        /// </summary>
        public static AdoNetSagaPersisterFluentConfigurer StoreInAdoNet(this RebusSagasConfigurer configurer, string connectionStringName, string sagaTable, string sagaIndexTable)
        {
            var connString = GetConnectionString(connectionStringName);
            var factory    = new AdoNetConnectionFactory(connString.ConnectionString, connString.ProviderName);
            var manager    = new AdoNetUnitOfWorkManager(factory);

            configurer.Backbone.ConfigureEvents(x => x.AddUnitOfWorkManager(manager));
            var persister = new AdoNetSagaPersister(manager, sagaTable, sagaIndexTable);

            configurer.Use(persister);

            return(persister);
        }
Пример #3
0
        protected AdoNetSagaPersister CreatePersister(bool createTables = false, bool useLocking = false, bool useNoWaitLocking = false)
        {
            var result = new AdoNetSagaPersister(_manager, SagaTableName, SagaIndexTableName);

            if (createTables)
            {
                result.EnsureTablesAreCreated();
            }
            if (useLocking)
            {
                result.UseLockingOnSagaUpdates(!useNoWaitLocking);
            }
            return(result);
        }
Пример #4
0
        private static void TestFindSagaByPropertyWithType <TProperty>(AdoNetSagaPersister persister, TProperty propertyValueToUse)
        {
            var propertyTypeToTest = typeof(TProperty);
            var type            = typeof(GenericSagaData <>);
            var sagaDataType    = type.MakeGenericType(propertyTypeToTest);
            var savedSagaData   = (ISagaData)Activator.CreateInstance(sagaDataType);
            var savedSagaDataId = Guid.NewGuid();
            var propertyName    = nameof(GenericSagaData <TProperty> .Property);

            savedSagaData.Id = savedSagaDataId;
            sagaDataType.GetProperty(propertyName).SetValue(savedSagaData, propertyValueToUse, new object[0]);
            persister.Insert(savedSagaData, new[] { propertyName });

            var foundSagaData = persister.Find <GenericSagaData <TProperty> >(propertyName, propertyValueToUse);

            Assert.That(foundSagaData.Id, Is.EqualTo(savedSagaDataId));
        }
Пример #5
0
        /// <summary>
        /// Configures Rebus to store sagas in AdoNet.
        /// </summary>
        public static AdoNetSagaPersisterFluentConfigurer StoreInAdoNet(this RebusSagasConfigurer configurer, string connectionStringName, string sagaTable, string sagaIndexTable, UOWCreatorDelegate unitOfWorkCreator = null)
        {
            if (unitOfWorkCreator == null)
            {
                unitOfWorkCreator = (fact, cont) => new AdoNetUnitOfWork(fact, cont);
            }

            var connString = GetConnectionString(connectionStringName);
            var factory    = new AdoNetConnectionFactory(connString.ConnectionString, connString.ProviderName);
            var manager    = new AdoNetUnitOfWorkManager(factory, unitOfWorkCreator);

            configurer.Backbone.ConfigureEvents(x => x.AddUnitOfWorkManager(manager));
            var persister = new AdoNetSagaPersister(manager, sagaTable, sagaIndexTable);

            configurer.Use(persister);

            return(persister);
        }