diff --git a/src/providers/WorkflowCore.Persistence.MongoDB/Services/MongoPersistenceProvider.cs b/src/providers/WorkflowCore.Persistence.MongoDB/Services/MongoPersistenceProvider.cs index 940b99194..91e796314 100644 --- a/src/providers/WorkflowCore.Persistence.MongoDB/Services/MongoPersistenceProvider.cs +++ b/src/providers/WorkflowCore.Persistence.MongoDB/Services/MongoPersistenceProvider.cs @@ -5,6 +5,8 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using MongoDB.Bson; +using MongoDB.Bson.Serialization.Conventions; using MongoDB.Driver.Linq; using WorkflowCore.Interface; using WorkflowCore.Models; @@ -24,6 +26,13 @@ public MongoPersistenceProvider(IMongoDatabase database) static MongoPersistenceProvider() { + ConventionRegistry.Register( + "workflow.conventions", + new ConventionPack + { + new EnumRepresentationConvention(BsonType.String) + }, t => t.FullName?.StartsWith("WorkflowCore") ?? false); + BsonClassMap.RegisterClassMap(x => { x.MapIdProperty(y => y.Id) @@ -72,8 +81,14 @@ static void CreateIndexes(MongoPersistenceProvider instance) { if (!indexesCreated) { - instance.WorkflowInstances.Indexes.CreateOne(Builders.IndexKeys.Ascending(x => x.NextExecution), new CreateIndexOptions() { Background = true, Name = "idx_nextExec" }); - instance.Events.Indexes.CreateOne(Builders.IndexKeys.Ascending(x => x.IsProcessed), new CreateIndexOptions() { Background = true, Name = "idx_processed" }); + instance.WorkflowInstances.Indexes.CreateOne(new CreateIndexModel( + Builders.IndexKeys.Ascending(x => x.NextExecution), + new CreateIndexOptions {Background = true, Name = "idx_nextExec"})); + + instance.Events.Indexes.CreateOne(new CreateIndexModel( + Builders.IndexKeys.Ascending(x => x.IsProcessed), + new CreateIndexOptions {Background = true, Name = "idx_processed"})); + indexesCreated = true; } }