/// <summary>
        /// Store the events in a RavenDB database.
        /// </summary>
        /// <param name="configurator">The Audit.NET Configurator</param>
        /// <param name="connectionString">The RavenDB connection string.</param>
        /// <param name="database">The RavenDB database name.</param>
        /// <param name="collection">The RavenDB collection name.</param>
        /// <param name="jsonSerializerSettings">The custom JsonSerializerSettings.</param>
        public static ICreationPolicyConfigurator UseRavenDB(this IConfigurator configurator, string[] urls, X509Certificate2 certificate, string database = "Audit", JsonSerializerSettings?jsonSerializerSettings = null, bool?storeDiffOnly = true)
        {
            var store = new DocumentStore {
                Urls = urls, Certificate = certificate, Database = database
            };
            var serializer = new NewtonsoftJsonSerializationConventions
            {
                JsonContractResolver = new AuditContractResolver()
            };

            serializer.CustomizeJsonSerializer += (JsonSerializer serializer) =>
            {
                serializer.DefaultValueHandling = DefaultValueHandling.IgnoreAndPopulate;
                serializer.NullValueHandling    = NullValueHandling.Ignore;
            };
            store.Conventions.Serialization = serializer;
            store.Initialize();

            var ravendbDataProvider = new RavenDbDataProvider(store, database, jsonSerializerSettings, storeDiffOnly);

            return(configurator.UseCustomProvider(ravendbDataProvider));
        }
Ejemplo n.º 2
0
        public async Task TestStoreSimpleEvent()
        {
            var ravendbDataProvider = new RavenDbDataProvider(_store, _store.Database, null, true);

            Configuration.Setup()
            .UseCustomProvider(ravendbDataProvider);

            using (var scope = await AuditScope.CreateAsync(new AuditScopeOptions()
            {
                EventType = "test"
            }))
            {
            }

            using (var session = _store.OpenAsyncSession())
            {
                var events = await session.Query <AuditEvent>().ToListAsync();

                Assert.Single(events);
                var ev = events[0];
                Assert.Equal("test", ev.EventType);
            }
        }