If you intend to always provide the id manually for every object insert, instead of letting Aurelius automatically generate the id for you, then I suggest you modify the identifier to none:
[Id('FID', TIdGenerator.None)]
TPerson = class
In this case you will be responsible for always providing the id of all objects. and SaveOrUpdate will not work because Aurelius cannot tell if it's an insert or update.
If you want to just sporadically set an id and do automatically insert or update in the database depending if the record already exists in the database, you can use replicate:
var Person := TPerson.Create;
Person.ID := person_from_web.id; // Set Primary Key
Person.Name := person_from_web.name;
ObjectManager.Replicate(Person);
This will do all the work, but it's slower as it requires an additional SELECT to check if the record exists in the database.