ah
They do it like all these systems do it: they have tables in which they store the entity definitions, the relationships etc. They don't work with typed classes, they create on the fly at runtime an untyped datatable with the columns defined for entity E as stored in the 'entity definition table' (or however it's called), and create a query to fetch the entity with the meta-data in that entity definition table. The data is then read into the datatable created for the result, and bound to a UI which is dynamically generated from the same meta-data.
I.o.w.: no code generation/type creation done, it's all based on meta-data obtained from tables in the database. The user can alter the entity definitions by effectively altering the meta-data in the entity definition tables. Systems then have to be in place to either alter the related data or toss it away.
The above is actually doable today, you need to setup the tables yourself and your logic reads the meta-data and builds the UI dynamically from it.
Do you have other experiences with this, i.e. that they do generate code at the backend which then has to be compiled? For a user who only operates a UI, compiling code doesn't really add much (as the user won't be able to alter it anyway)