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; }
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); } }