When you add an entity to a transaction (or in adapter, when an entity is saved inside a transaction, for example you first start a transaction then call SaveEntity()), its fields are backupped internally. This is done because when a rollback takes place, the original field values have to be set back as newly received identity values for example should not be present, as the save failed.
Because of this, calling SaveFields() during this action is not helping as rolling back the transaction will overwrite the saved fields anyway.
So to avoid this error: do not call SaveFields() on an entity that participates in a transaction.