Table of Contents

Transaction

In one line: the unit of isolation — one writer, one consistent read snapshot, one atomic set of changes that either all commit or all roll back.

A Transaction is owned by the thread that created it (single-thread-affine) and carries no locks on itself — that is what makes opening one essentially free. Its reads run against a snapshot fixed at creation; its writes become visible to later readers only at Commit, and are discarded on Rollback.

A transaction is a true ACID envelope only for the Versioned data it touches. For SingleVersion/Transient components it still gives you thread affinity, atomic entity spawn/destroy, and a consistent snapshot of any Versioned components in the same archetype — but not isolation, rollback, or commit-timed durability on those components' values.

⚠️ Commit() returning makes a change visible, not necessarily durable — that is the Unit of Work's job. See visible ≠ durable.

How it relates

In the API

Learn & use