예제 #1
0
 private static void ConfigureForNodaTime(CustomizeJsonSerializerFactory jsonSerializerFactory)
 {
     jsonSerializerFactory.Add(serializer =>
     {
         serializer.Converters.Add(new NodaTimeDurationTicksJsonConverter());
     });
 }
예제 #2
0
        public static IDocumentStore CreateStore(string connectionString, params Assembly[] assemblyForIndexingTasks)
        {
            var customizeJsonSerializerFactory = new CustomizeJsonSerializerFactory();
            var documentStore = new DocumentStore();

            documentStore.ParseConnectionString(connectionString);
            ConfigureUniqueConstraints(documentStore);
            ConfigureIdTypeConverters(documentStore);
            ConfigureUnionTypeConverter(documentStore);
            ConfigureListeners(documentStore);
            ConfigureForCustomContractResolver(documentStore);
            documentStore.Initialize();
            CreateIndexes(documentStore, assemblyForIndexingTasks);
            ConfigureMaxRequest(documentStore);
            ConfigureForNodaTime(customizeJsonSerializerFactory);
            ConfigureTypeResolver(documentStore, customizeJsonSerializerFactory);

            documentStore.Conventions.CustomizeJsonSerializer = serializer => customizeJsonSerializerFactory.Execute(serializer);
            return(documentStore);
        }
예제 #3
0
        private static void ConfigureTypeResolver(IDocumentStore documentStore, CustomizeJsonSerializerFactory jsonSerializerFactory)
        {
            var modelTypeResolver = new ModelTypeResolver();
            var modelBinderSetter = new ModelSerializationBinderSetter(modelTypeResolver);

            modelTypeResolver.Register <SmoothConfiguration>(
                "xggameplan.SmoothProcessing.SmoothConfiguration, xggameplan.core");
            modelTypeResolver.Register <SmoothPassDefault>(
                "xggameplan.SmoothProcessing.SmoothPassDefault, xggameplan.core");
            modelTypeResolver.Register <SmoothPassUnplaced>(
                "xggameplan.SmoothProcessing.SmoothPassUnplaced, xggameplan.core");
            modelTypeResolver.Register <SmoothPassBooked>(
                "xggameplan.SmoothProcessing.SmoothPassBooked, xggameplan.core");

            jsonSerializerFactory.Add(serializer => modelBinderSetter.Set(serializer));

            documentStore.Conventions.FindClrType = (documentName, obj, metadata) =>
            {
                var clrTypeName = metadata.Value <string>(Raven.Abstractions.Data.Constants.RavenClrType);
                return(modelTypeResolver.Resolve(clrTypeName)?.FullName ?? clrTypeName);
            };
        }