I'm sure you're not referring to 'they get filled when you call FetchEntity'
, but when you fetch a collection, am I correct? I'll assume you do mean the latter, so I'll explain.
In a collection fetch, the fetch is performed in DataAccessAdapterBase.ExecuteMultiRowRetrievalQuery.
For each row in the datareader, it uses the 'CreateFields()' (no parameters) method of the entity factory to use to create an EntityFields2 object. It then fills that object with the data of the current row.
After the EntityFields2 object is filled, it calls the entity factory's Create(entityFields2) method to create an entity. This routine will call the constructor which accepts an IEntityFields2 object, which ends up in the init routine for the entity class. In there you'll find a region (and an include of a template) to which you can add your own code. To be safe: check if the Fields.State is EntityState.Fetched. If not, it's a new entity, otherwise it's a fetched entity. This to make sure you set the fields to the right default values for example.