Я закончил тем, что установил PrimaryKeyType в Назначенный. Затем я обработал его с помощью переопределенной функции Create:
public override void Create() {
if (ID == default(Guid)) ID = GUIDGenerator.Generate();
base.Create();
}
Было бы лучше поместить это в OnSave, но первичный ключ нельзя изменить в перехватчике. Это работает для моего приложения, однако этот код будет вызываться только в случае явного создания объекта. Это не будет работать, если объект создан каскадом.