diff --git a/src/core/Elsa.Core/Data/Extensions/PersistenceServiceCollectionExtensions.cs b/src/core/Elsa.Core/Data/Extensions/PersistenceServiceCollectionExtensions.cs index c1628b8b9..e7a392ccc 100644 --- a/src/core/Elsa.Core/Data/Extensions/PersistenceServiceCollectionExtensions.cs +++ b/src/core/Elsa.Core/Data/Extensions/PersistenceServiceCollectionExtensions.cs @@ -31,9 +31,9 @@ namespace Elsa.Data.Extensions IServiceProvider serviceProvider, Action configure) { - var configuration = new Configuration(); + var configuration = new Configuration { ContentSerializer = new CustomJsonContentSerializer() }; configure(serviceProvider, configuration); - + // TODO: The following line is a temporary workaround until the bug in YesSql is fixed: https://github.com/sebastienros/yessql/pull/280 var store = StoreFactory.CreateAndInitializeAsync(configuration).GetAwaiter().GetResult(); //var store = StoreFactory.Create(configuration); diff --git a/src/core/Elsa.Core/Data/Services/CustomJsonContentSerializer.cs b/src/core/Elsa.Core/Data/Services/CustomJsonContentSerializer.cs new file mode 100644 index 000000000..c16830bca --- /dev/null +++ b/src/core/Elsa.Core/Data/Services/CustomJsonContentSerializer.cs @@ -0,0 +1,16 @@ +using System; +using Newtonsoft.Json; +using NodaTime; +using NodaTime.Serialization.JsonNet; +using YesSql; + +namespace Elsa.Data.Services +{ + public class CustomJsonContentSerializer : IContentSerializer + { + private static readonly JsonSerializerSettings JsonSettings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto }.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb); + public object? Deserialize(string content, Type type) => JsonConvert.DeserializeObject(content, type, JsonSettings); + public dynamic? DeserializeDynamic(string content) => JsonConvert.DeserializeObject(content, JsonSettings); + public string Serialize(object item) => JsonConvert.SerializeObject(item, JsonSettings); + } +} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.DistributedLock/Program.cs b/src/samples/Elsa.Samples.DistributedLock/Program.cs index f0f60fde7..1d7ab16dc 100644 --- a/src/samples/Elsa.Samples.DistributedLock/Program.cs +++ b/src/samples/Elsa.Samples.DistributedLock/Program.cs @@ -24,7 +24,7 @@ namespace Elsa.Samples.DistributedLock { services .AddElsa(options => options - .UsePersistence(db => db.UseSqLite("Data Source=elsa2.db;Cache=Shared")) + .UsePersistence(db => db.UseSqLite("Data Source=elsa.db;Cache=Shared")) .UseRedisLockProvider("localhost:6379,abortConnect=false")) .AddConsoleActivities() .AddTimerActivities(options => options.Configure(timer => timer.SweepInterval = Duration.FromSeconds(5)))