Example #1
0
        public SqlStateProvider(ISqlStateProviderConfig config, IDbConnectionManager connManager)
        {
            EnsureArg.IsNotNull(config);
            EnsureArg.IsNotNull(connManager);
            EnsureArg.IsNotNullOrWhiteSpace(config.DbConnectionString);

            _connManager            = connManager;
            _config                 = config;
            _jsonSerializerSettings = ArkDefaultJsonSerializerSettings.Instance;
        }
Example #2
0
        public SqlStateProvider(ISqlStateProviderConfig config, IDbConnectionManager connManager)
        {
            EnsureArg.IsNotNull(config);
            EnsureArg.IsNotNull(connManager);

            _connManager            = connManager;
            _config                 = config;
            _jsonSerializerSettings = new JsonSerializerSettings();
            _jsonSerializerSettings.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb);
            _jsonSerializerSettings.NullValueHandling = NullValueHandling.Include;
            _jsonSerializerSettings.TypeNameHandling  = TypeNameHandling.None;
            _jsonSerializerSettings.Converters.Add(new StringEnumConverter());
        }
Example #3
0
        /// <summary>
        /// Use the SqlStateProvider as StateProvider
        /// </summary>
        /// <param name="host">The workerHost</param>
        /// <param name="config">The config</param>
        public static void UseSqlStateProvider <TFile, TMetadata, TQueryFilter>
            (this WorkerHost <TFile, TMetadata, TQueryFilter> host, ISqlStateProviderConfig config)
            where TFile : class, IResource <TMetadata>
            where TMetadata : class, IResourceMetadata
            where TQueryFilter : class, new()
        {
            NodaTimeDapperSqlServer.Setup();

            Dapper.SqlMapper.AddTypeMap(typeof(DateTime), DbType.DateTime2);
            Dapper.SqlMapper.AddTypeMap(typeof(DateTime?), DbType.DateTime2);

            host.UseStateProvider <SqlStateProvider>(r =>
            {
                r.Container.RegisterSingleton <IDbConnectionManager, ReliableSqlConnectionManager>();
                r.Container.RegisterInstance(config);
                r.OnBeforeStart += () => r.Container.GetInstance <SqlStateProvider>().EnsureTableAreCreated();
            });
        }