public void Add(Guid aggregateId, IEnumerable<object> events)
        {
            var stream = new EventStream(aggregateId.ToString());
            stream.Append(events);
            _documentSession.Store(stream);

            SetRavenCollectionName(events, _documentSession, stream);

            _hasChanges = true;
        }
Exemplo n.º 2
0
        public void Store(Guid aggregateId, IEnumerable<object> events)
        {
            using (var session = _documentStore.OpenSession())
            {
                var aggregateIdAsString = aggregateId.ToString();

                var stream = session.Load<EventStream>(aggregateIdAsString);

                if (stream == null)
                {
                    stream = new EventStream(aggregateIdAsString);
                    stream.Append(events);
                    session.Store(stream);
                }
                else
                {
                    stream.Append(events);
                }

                session.SaveChanges();
            }
        }
 private static void SetRavenCollectionName(IEnumerable<object> events, IDocumentSession session, EventStream stream)
 {
     if (Conventions.FindAggregateTypeForEventType != null)
     {
         var aggregateType = Conventions.FindAggregateTypeForEventType(events.First().GetType());
         session.Advanced.GetMetadataFor(stream)[Constants.RavenEntityName] =
             DocumentConvention.DefaultTypeTagName(aggregateType);
     }
 }