In event sourcing, projecting an entity means reading its stream sequentially starting from a blank/empty data structure, traversing each event one by one and updating the in-memory representation accordingly (e.g. copy attributes on 'opened', add balance on 'deposited', subtract on 'withdrawn'). Projecting into a materialized view / read-model database works the same way as projecting into an in-memory entity. Handlers should control the projection directly rather than receive an already-projected entity, so that caching and snapshotting strategies can be chosen per case.