public static async Task PersistCommitAsync( this IEventStoreConnection connection, Commit commit, int pageSize = 512) { var expectedVersion = commit.Version - commit.Events.Count(); var expectedEventStreamVersion = expectedVersion == 0 ? ExpectedVersion.NoStream : expectedVersion; if (commit.Events.Count < pageSize) { await connection.AppendToStreamAsync(commit.StreamId, expectedEventStreamVersion, commit.Events) .ConfigureAwait(false); } else { var transaction = await connection.StartTransactionAsync(commit.StreamId, expectedEventStreamVersion) .ConfigureAwait(false); for (var i = 0; i < commit.Events.Count; i += pageSize) { await transaction.WriteAsync(commit.Events.Skip(i).Take(pageSize)) .ConfigureAwait(false); } await transaction.CommitAsync() .ConfigureAwait(false); } }
public static WriteResult AppendToStream(this IEventStoreConnection con, string stream, int expectedVersion, IEnumerable<EventData> events, UserCredentials userCredentials = null) { var task = con.AppendToStreamAsync(stream, expectedVersion, events, userCredentials); task.Wait(); return task.Result; }