@@ -8,8 +8,12 @@ public interface IMartenRepository<T> where T : class, IAggregate
8
8
{
9
9
Task < T ? > Find ( Guid id , CancellationToken cancellationToken ) ;
10
10
Task < long > Add ( T aggregate , TraceMetadata ? eventMetadata = null , CancellationToken cancellationToken = default ) ;
11
- Task < long > Update ( T aggregate , long ? expectedVersion = null , TraceMetadata ? traceMetadata = null , CancellationToken cancellationToken = default ) ;
12
- Task < long > Delete ( T aggregate , long ? expectedVersion = null , TraceMetadata ? eventMetadata = null , CancellationToken cancellationToken = default ) ;
11
+
12
+ Task < long > Update ( T aggregate , long ? expectedVersion = null , TraceMetadata ? traceMetadata = null ,
13
+ CancellationToken cancellationToken = default ) ;
14
+
15
+ Task < long > Delete ( T aggregate , long ? expectedVersion = null , TraceMetadata ? eventMetadata = null ,
16
+ CancellationToken cancellationToken = default ) ;
13
17
}
14
18
15
19
public class MartenRepository < T > : IMartenRepository < T > where T : class , IAggregate
@@ -26,7 +30,8 @@ IDocumentSession documentSession
26
30
public Task < T ? > Find ( Guid id , CancellationToken cancellationToken ) =>
27
31
documentSession . Events . AggregateStreamAsync < T > ( id , token : cancellationToken ) ;
28
32
29
- public async Task < long > Add ( T aggregate , TraceMetadata ? traceMetadata = null , CancellationToken cancellationToken = default )
33
+ public async Task < long > Add ( T aggregate , TraceMetadata ? traceMetadata = null ,
34
+ CancellationToken cancellationToken = default )
30
35
{
31
36
documentSession . CorrelationId = traceMetadata ? . CorrelationId ? . Value ;
32
37
documentSession . CausationId = traceMetadata ? . CausationId ? . Value ;
@@ -43,20 +48,19 @@ public async Task<long> Add(T aggregate, TraceMetadata? traceMetadata = null, Ca
43
48
return events . Length ;
44
49
}
45
50
46
- public async Task < long > Update ( T aggregate , long ? expectedVersion = null , TraceMetadata ? traceMetadata = null , CancellationToken cancellationToken = default )
51
+ public async Task < long > Update ( T aggregate , long ? expectedVersion = null , TraceMetadata ? traceMetadata = null ,
52
+ CancellationToken cancellationToken = default )
47
53
{
48
54
documentSession . CorrelationId = traceMetadata ? . CorrelationId ? . Value ;
49
55
documentSession . CausationId = traceMetadata ? . CausationId ? . Value ;
50
56
51
57
var events = aggregate . DequeueUncommittedEvents ( ) ;
52
58
53
- var nextVersion = expectedVersion . HasValue ?
54
- expectedVersion . Value + events . Length
55
- : aggregate . Version ;
59
+ var nextVersion = ( expectedVersion ?? aggregate . Version ) + events . Length ;
56
60
57
61
documentSession . Events . Append (
58
62
aggregate . Id ,
59
- aggregate . Version ,
63
+ nextVersion ,
60
64
events
61
65
) ;
62
66
@@ -65,6 +69,7 @@ public async Task<long> Update(T aggregate, long? expectedVersion = null, TraceM
65
69
return nextVersion ;
66
70
}
67
71
68
- public Task < long > Delete ( T aggregate , long ? expectedVersion = null , TraceMetadata ? traceMetadata = null , CancellationToken cancellationToken = default ) =>
72
+ public Task < long > Delete ( T aggregate , long ? expectedVersion = null , TraceMetadata ? traceMetadata = null ,
73
+ CancellationToken cancellationToken = default ) =>
69
74
Update ( aggregate , expectedVersion , traceMetadata , cancellationToken ) ;
70
75
}
0 commit comments