public void capture_events() { // SAMPLE: event-store-quickstart var store = DocumentStore.For(_ => { _.Connection(ConnectionSource.ConnectionString); _.Events.InlineProjections.AggregateStreamsWith<QuestParty>(); }); var questId = Guid.NewGuid(); using (var session = store.OpenSession()) { var started = new QuestStarted {Name = "Destroy the One Ring"}; var joined1 = new MembersJoined(1, "Hobbiton", "Frodo", "Merry"); // Start a brand new stream and commit the new events as // part of a transaction session.Events.StartStream<Quest>(questId, started, joined1); session.SaveChanges(); // Append more events to the same stream var joined2 = new MembersJoined(3, "Buckland", "Merry", "Pippen"); var joined3 = new MembersJoined(10, "Bree", "Aragorn"); var arrived = new ArrivedAtLocation { Day = 15, Location = "Rivendell" }; session.Events.Append(questId, joined2, joined3, arrived); session.SaveChanges(); } // ENDSAMPLE // SAMPLE: events-fetching-stream using (var session = store.OpenSession()) { var events = session.Events.FetchStream(questId); events.Each(evt => { Console.WriteLine($"{evt.Version}.) {evt.Data}"); }); } // ENDSAMPLE // SAMPLE: events-aggregate-on-the-fly using (var session = store.OpenSession()) { // questId is the id of the stream var party = session.Events.AggregateStream<QuestParty>(questId); Console.WriteLine(party); var party_at_version_3 = session.Events .AggregateStream<QuestParty>(questId, 3); var party_yesterday = session.Events .AggregateStream<QuestParty>(questId, timestamp: DateTime.UtcNow.AddDays(-1)); } // ENDSAMPLE using (var session = store.OpenSession()) { var party = session.Load<QuestParty>(questId); Console.WriteLine(party); } }
public void Arrived(string location, int day) { var @event = new ArrivedAtLocation {Day = day, Location = location}; _events.Add(@event); }