public T?AggregateStream <T>(Guid streamId, long version = 0, DateTimeOffset?timestamp = null, T?state = null, long fromVersion = 0) where T : class { var events = FetchStream(streamId, version, timestamp, fromVersion); var aggregator = _store.Options.Projections.AggregatorFor <T>(); if (!events.Any()) { return(null); } var aggregate = aggregator.Build(events, _session, state); var storage = _session.StorageFor <T>(); if (storage is IDocumentStorage <T, Guid> s) { s.SetIdentity(aggregate, streamId); } return(aggregate); }
public IDocumentStorage Find(QuerySession session) { return(session.StorageFor <T>()); }