Beispiel #1
0
        /// <summary>
        /// Saves the snapshot.
        /// </summary>
        /// <param name="aggregateType">Type of the aggregate.</param>
        /// <param name="snapshot">The snapshot.</param>
        public void SaveSnapshot(Type aggregateType, AggregateRootSnapshot snapshot)
        {
            var connectionStringBuilder = new MongoConnectionStringBuilder(_connectionString);
            var database = MongoServer.Create(connectionStringBuilder).GetDatabase(connectionStringBuilder.DatabaseName);
            var query    = Query.EQ("AggregateID", _makeAggregateID(snapshot.AggregateID));
            var update   = new UpdateDocument
            {
                { "$set", snapshot.ToBson() }
            };

            database.GetCollection <AggregateRootSnapshot>(_tableName).Update(query, update, UpdateFlags.Upsert);
        }