0

イベントをストアに保存しようとすると、次の例外が発生します。

The commit must be uniquely identified.\r\nParameter name: attempt

しかし、私のコードは常にコミット用の新しい新しい Guid を生成します (NEventStore の例に従って)

public void Save(Guid aggregateId, IEnumerable<Event> events, int expectedVersion)
{
    var eventList = events as IList<Event> ?? events.ToList();

    using (var scope = new TransactionScope())
    using (var stream = store.OpenStream(aggregateId, 0, int.MaxValue))
    {
        if(stream.StreamRevision != expectedVersion)
            throw new ConcurrencyException();

        foreach (var @event in eventList)
        {
            stream.Add(new EventMessage { Body = @event });
        }

        stream.CommitChanges(Guid.NewGuid());

        scope.Complete();
    }

    foreach (var @event in eventList)
    {
        publisher.Publish(@event);
    }
}

なぜこれが起こっているのか誰にも分かりますか?

4

1 に答える 1

1

メッセージは誤解を招くものです。このチェックが行われると、ここにスローされます...

attempt.StreamId != Guid.Empty && attempt.CommitId != Guid.Empty

偽です。したがって、 と の両方が空であってはCommitIdなりStreamIdません。

于 2013-12-03T20:29:11.920 に答える