Sacha Mallais

Generally avoid them. However, when you need them you can usually use the Propagate Primary Key feature to avoid having to do anything fancy.

Writing a delegate to generate PKs from the database is not a big deal (see GVCEOFExtensions for an example of an integer PK caching delegate).