ReadonlyEpochThe outermost transaction the frames belong to, unique per process, or null when the work
was caused with no transaction open. A null epoch is not "unknown": it says the save is
already durable, so the task runs whenever it registers, rather than being attached to an
unrelated transaction that happens to be open by then.
ReadonlyFrameIds of the open frames, outermost first (the outermost transaction, then each savepoint).
Identifies the transaction frames that were open at one moment, so work registered later with DatabaseProviderBase.RunAfterCommit is tied to the transaction it came from rather than to whatever transaction happens to be open when it registers.
Capture it synchronously with DatabaseProviderBase.CapturePostCommitToken at the point the work is caused (e.g. in a save hook, before the first
await). Opaque to callers — pass it back to the same provider unchanged.