diff --git a/src/modules/Elsa.Dapper/Modules/Runtime/Stores/DapperActivityExecutionRecordStore.cs b/src/modules/Elsa.Dapper/Modules/Runtime/Stores/DapperActivityExecutionRecordStore.cs
index aba418fc6..7b28f46db 100644
--- a/src/modules/Elsa.Dapper/Modules/Runtime/Stores/DapperActivityExecutionRecordStore.cs
+++ b/src/modules/Elsa.Dapper/Modules/Runtime/Stores/DapperActivityExecutionRecordStore.cs
@@ -49,6 +49,13 @@ public class DapperActivityExecutionRecordStore : IActivityExecutionStore
await _store.SaveManyAsync(mappedRecords, PrimaryKeyName, cancellationToken);
}
+ ///
+ public async Task AddManyAsync(IEnumerable records, CancellationToken cancellationToken = default)
+ {
+ var mappedRecords = records.Select(Map).ToList();
+ await store.AddManyAsync(mappedRecords, cancellationToken);
+ }
+
///
public async Task FindAsync(ActivityExecutionRecordFilter filter, CancellationToken cancellationToken = default)
{
diff --git a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/ActivityExecutionLogStore.cs b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/ActivityExecutionLogStore.cs
index 9ee9078d7..6cb1757ca 100644
--- a/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/ActivityExecutionLogStore.cs
+++ b/src/modules/Elsa.EntityFrameworkCore/Modules/Runtime/ActivityExecutionLogStore.cs
@@ -35,6 +35,9 @@ public class EFCoreActivityExecutionStore(
///
public async Task SaveManyAsync(IEnumerable records, CancellationToken cancellationToken = default) => await store.SaveManyAsync(records, OnSaveAsync, cancellationToken);
+ ///
+ public async Task AddManyAsync(IEnumerable records, CancellationToken cancellationToken = default) => await store.AddManyAsync(records, OnSaveAsync, cancellationToken);
+
///
[RequiresUnreferencedCode("Calls Elsa.EntityFrameworkCore.Modules.Runtime.EFCoreActivityExecutionStore.DeserializeActivityState(RuntimeElsaDbContext, ActivityExecutionRecord, CancellationToken)")]
public async Task FindAsync(ActivityExecutionRecordFilter filter, CancellationToken cancellationToken = default)
diff --git a/src/modules/Elsa.MongoDb/Modules/Runtime/ActivityExecutionLogStore.cs b/src/modules/Elsa.MongoDb/Modules/Runtime/ActivityExecutionLogStore.cs
index 8766faf7d..dc5e3e3ba 100644
--- a/src/modules/Elsa.MongoDb/Modules/Runtime/ActivityExecutionLogStore.cs
+++ b/src/modules/Elsa.MongoDb/Modules/Runtime/ActivityExecutionLogStore.cs
@@ -28,6 +28,12 @@ public class MongoActivityExecutionLogStore(MongoDbStore
+ public Task AddManyAsync(IEnumerable records, CancellationToken cancellationToken = default)
+ {
+ return mongoDbStore.AddManyAsync(records, cancellationToken);
+ }
+
///
public Task FindAsync(ActivityExecutionRecordFilter filter, CancellationToken cancellationToken = default)
{
diff --git a/src/modules/Elsa.Workflows.Runtime/Contracts/ILogRecordStore.cs b/src/modules/Elsa.Workflows.Runtime/Contracts/ILogRecordStore.cs
index 22f90bbc3..a3675bba5 100644
--- a/src/modules/Elsa.Workflows.Runtime/Contracts/ILogRecordStore.cs
+++ b/src/modules/Elsa.Workflows.Runtime/Contracts/ILogRecordStore.cs
@@ -10,4 +10,9 @@ public interface ILogRecordStore where T : ILogRecord
/// If a record does not already exist, it is added to the store; if it does exist, its existing entry is updated.
///
Task SaveManyAsync(IEnumerable records, CancellationToken cancellationToken = default);
+
+ ///
+ /// Adds a collection of log records to the store.
+ ///
+ Task AddManyAsync(IEnumerable records, CancellationToken cancellationToken = default);
}
\ No newline at end of file
diff --git a/src/modules/Elsa.Workflows.Runtime/Stores/MemoryActivityExecutionStore.cs b/src/modules/Elsa.Workflows.Runtime/Stores/MemoryActivityExecutionStore.cs
index fc4545d02..65bbefa54 100644
--- a/src/modules/Elsa.Workflows.Runtime/Stores/MemoryActivityExecutionStore.cs
+++ b/src/modules/Elsa.Workflows.Runtime/Stores/MemoryActivityExecutionStore.cs
@@ -36,6 +36,13 @@ public class MemoryActivityExecutionStore : IActivityExecutionStore
return Task.CompletedTask;
}
+ ///
+ public Task AddManyAsync(IEnumerable records, CancellationToken cancellationToken = default)
+ {
+ _store.AddMany(records, x => x.Id);
+ return Task.CompletedTask;
+ }
+
///
public Task FindAsync(ActivityExecutionRecordFilter filter, CancellationToken cancellationToken = default)
{
diff --git a/src/modules/Elsa.Workflows.Runtime/Stores/NoopActivityExecutionStore.cs b/src/modules/Elsa.Workflows.Runtime/Stores/NoopActivityExecutionStore.cs
index 7a9d1e125..59893807f 100644
--- a/src/modules/Elsa.Workflows.Runtime/Stores/NoopActivityExecutionStore.cs
+++ b/src/modules/Elsa.Workflows.Runtime/Stores/NoopActivityExecutionStore.cs
@@ -17,6 +17,11 @@ public class NoopActivityExecutionStore : IActivityExecutionStore
return Task.CompletedTask;
}
+ public Task AddManyAsync(IEnumerable records, CancellationToken cancellationToken = default)
+ {
+ return Task.CompletedTask;
+ }
+
public Task FindAsync(ActivityExecutionRecordFilter filter, CancellationToken cancellationToken = default)
{
return Task.FromResult(null);