我在Jonathon Oliver的EventStore中看到以下错误:
错误:23505:重复键值违反了唯一约束" ix_commits_revisions"
为什么会发生这种情况?
答案 0 :(得分:5)
假设索引是我用Google搜索的那样:
CREATE UNIQUE INDEX IX_Commits_Revisions ON Commits (
StreamId, StreamRevision, Items);
两个Save
已写入等效更改,表示存在乐观并发冲突。
通常,这将由公共域(或类似)层转换为EventStore ConcurrencyException
。
解决方案是针对流中事件的新负载重新应用命令。
如果要缓存IEventRepository
,则不应该对拥有数据库写入权限的所有人都能同等地写入事件流。
我怎么知道这一切? NuGet包中的自述文件非常清楚地解释了这一背后的基础,如果您不阅读并重读它们直到您自己解决这个问题,那么您就是在偷自己/您的雇主了!