Ok, I was able to reproduce it and the debugger told me what was wrong:
- an entity in selfservicing which doesn't have a PK doesn't get methods generated for Delete, Fetch, as described earlier. This means that a Delete() call on this entity simply is a no-op, as it can't delete the entity.
- Adding a PK (be it, PROJECT_ID+ANALYST_ID or a new field, e.g. ID, doesn't matter), will cause the code generator to generate the essential method into ProjectAnalystEntity, so it can be deleted properly. (I tried both, both fix your problem). If you can't fix it with a PK, you've to regenerate the code and make sure your application uses the new generated code.
When you create a project, or refresh the project, the application output window will tell you which tables don't have a PK, when you create a project, it will also notify you with a dialog. The point is: every entity has to have a primary key. No exception. You might want to think this is bogus, but it's not: if it doesn't have a PK, it can't be deleted nor fetched nor saved properly.
About having an error / exception for this: this is too late, the designer has to notify this. It does, but not properly enough, I'd say. In v3, you can't generate code if an entity doesn't have a pk (as the project is then containing an error during validation, so will stop the process).
So, to fix this: add a PK to your entity.