/// <summary> /// Add multiple events to the stream /// </summary> /// <typeparam name="T">Type of the aggregate</typeparam> /// <param name="id">The id of the aggregate</param> /// <param name="events">The events to add</param> public async Task Add <T>(Guid id, IEnumerable <Event> events) { var streamId = StreamId <T>(id); using var aes = await GetAes(streamId, true); await _eventStore.Add(streamId, await Task.WhenAll(events.Select(async @event => await Encrypt(aes, @event)))); if (events.Any(@event => @event is IProtectedDataDeletionEvent)) { await _keyStore.Delete(streamId, DeleteAfter); } }