public async Task SetUp() { var cfg = new Configuration() .DataBaseIntegration(x => { x.Dialect <MsSql2012Dialect>(); x.ConnectionString = Consts.SqlConnectionString; }); var metaModel = new SagaMetadataCollection(); metaModel.Initialize(SagaTypes); var sagaDataTypes = new List <Type>(); using (var enumerator = metaModel.GetEnumerator()) { while (enumerator.MoveNext()) { sagaDataTypes.Add(enumerator.Current.SagaEntityType); } } sagaDataTypes.Add(typeof(ContainSagaData)); SagaModelMapper.AddMappings(cfg, metaModel, sagaDataTypes); SessionFactory = cfg.BuildSessionFactory(); schema = new SchemaExport(cfg); await schema.CreateAsync(false, true); SagaPersister = new SagaPersister(); }
/// <summary> /// Generates the table creation script for the saga data table /// </summary> /// <param name="tableNamingConvention">Optional custom table naming convention.</param> /// <typeparam name="TSaga">Saga type.</typeparam> public static string GenerateSagaScript <TSaga>(Func <Type, string> tableNamingConvention = null) where TSaga : Saga { var sagaBase = typeof(TSaga).BaseType; var sagaDataType = sagaBase.GetGenericArguments()[0]; var metadata = new SagaMetadataCollection(); metadata.Initialize(new[] { typeof(TSaga) }); var typesToScan = new List <Type> { sagaDataType }; var sagaDataBase = sagaDataType.BaseType; while (sagaDataBase != null) { typesToScan.Add(sagaDataBase); sagaDataBase = sagaDataBase.BaseType; } var config = new Configuration(); config.DataBaseIntegration(db => { db.Dialect <T>(); }); SagaModelMapper.AddMappings(config, metadata, typesToScan, tableNamingConvention); return(GenerateScript(config)); }
public void SetUp() { ConnectionString = $"Data Source={Path.GetTempFileName()};New=True;"; var configuration = new Configuration() .AddProperties(new Dictionary <string, string> { { "dialect", dialect }, { Environment.ConnectionString, ConnectionString } }); var metaModel = new SagaMetadataCollection(); metaModel.Initialize(SagaTypes); var sagaDataTypes = new List <Type>(); using (var enumerator = metaModel.GetEnumerator()) { while (enumerator.MoveNext()) { sagaDataTypes.Add(enumerator.Current.SagaEntityType); } } sagaDataTypes.Add(typeof(ContainSagaData)); SagaModelMapper.AddMappings(configuration, metaModel, sagaDataTypes); SessionFactory = configuration.BuildSessionFactory(); new SchemaUpdate(configuration).Execute(true, true); SagaPersister = new SagaPersister(); }
internal void ApplyMappings(ReadOnlySettings settings, Configuration configuration) { var tableNamingConvention = settings.GetOrDefault <Func <Type, string> >("NHibernate.Sagas.TableNamingConvention"); var scannedAssemblies = settings.GetAvailableTypes().Select(t => t.Assembly).Distinct(); foreach (var assembly in scannedAssemblies) { configuration.AddAssembly(assembly); } var allSagaMetadata = settings.Get <SagaMetadataCollection>(); var types = settings.GetAvailableTypes().Except(configuration.ClassMappings.Select(x => x.MappedClass)); SagaModelMapper.AddMappings(configuration, allSagaMetadata, types, tableNamingConvention); }