public async Task Update <T>(SnapshotUnit <TPrimaryKey, T> snapshot) where T : ISnapshot, new() { using var db = this.dbFactory.GetSnapshotDb(this.optionName); await db.UpdateAsync(new SnapshotEntity <TPrimaryKey> { Id = snapshot.Meta.ActorId, Data = this.serializer.Serialize(snapshot.Data), DoingVersion = snapshot.Meta.DoingVersion, Version = snapshot.Meta.Version, MinEventTimestamp = snapshot.Meta.MinEventTimestamp, MinEventVersion = snapshot.Meta.MinEventVersion, IsLatest = snapshot.Meta.IsLatest }, this.tableName); }
public override void Apply(SnapshotUnit <TPrimaryKey, TSnapshot> snapshotBox, EventUnit <TPrimaryKey> eventBox) { switch (eventBox.Event) { case CreatingEvent <TSnapshot> : CreatingSnapshotHandle(snapshotBox.Data, (CreatingEvent <TSnapshot>)eventBox.Event); return; case UpdatingEvent <TSnapshot> : UpdatingSnapshotHandle(snapshotBox.Data, (UpdatingEvent <TSnapshot>)eventBox.Event); return; case DeletingEvent <TSnapshot> : DeletingSnapshotHandle(snapshotBox.Data, (DeletingEvent <TSnapshot>)eventBox.Event); return; default: base.Apply(snapshotBox, eventBox); return; } }