예제 #1
0
        private void SaveEvents(Guid aggregateId, long uncomittedVersion, IEnumerable <IEvent> uncommittedEvents)
        {
            using (var ctx = new EventStoreContext())
            {
                long eventVersion = uncomittedVersion;

                foreach (IEvent evnt in uncommittedEvents)
                {
                    eventVersion++;

                    evnt.Id      = aggregateId;
                    evnt.Version = eventVersion;

                    ctx.AddToEvents(new Event
                    {
                        AggregateId = evnt.Id,
                        Version     = evnt.Version,
                        Data        = ToBinary(converter.Convert(evnt)),
                        Type        = evnt.GetType().Name
                    });
                }

                ctx.SaveChanges();
            }
        }
예제 #2
0
        /// <summary>
        ///   Saves a snapshot of the specified event source.
        /// </summary>
        public void SaveShapShot(IEventSource source)
        {
            using (var ctx = new EventStoreContext())
            {
                IMemento memento = source.GetMemento();

                ctx.AddToSnapshots(new Snapshot
                {
                    Data        = ToBinary(converter.Convert(memento)),
                    AggregateId = source.Id,
                    Version     = source.Version,
                    Type        = memento.GetType().Name
                });

                ctx.SaveChanges();
            }
        }