If set to true, the record will be saved to the database even if nothing is detected to be "dirty" or changed since the prior load.
OptionalISAThe entity name of the child that initiated this parent save in an IS-A chain. Used by server-side providers to skip the active branch when propagating Record Change entries to sibling branches of overlapping parents. Only set when IsParentEntitySave is true.
OptionalIsWhen true, this entity is being saved as part of an IS-A parent chain initiated by a child entity. Provider behavior:
OptionalOnOptional callback invoked exactly once, after all pre-flight checks pass
(synchronous Validate(), ValidateAsync(), and PreSave hooks) but before the
record is persisted to the database. It receives the entity being saved.
This is the framework hook for optimistic UI: a UI surface can render the user's
change the moment it is known to be valid — without the "render then validation fails
then roll back" flicker you get when you render before calling Save(). The await on
Save() is still in place; only the visible render moves earlier.
It does not fire when the save is skipped (not dirty / ReplayOnly) or when validation
fails. Any error thrown by the callback is swallowed and logged so a UI bug can never
abort the persistence it was meant to accompany. See guides/OPTIMISTIC_UI_SAVE_PATTERN.md.
Receives the BaseEntity being saved (callers typically close over their own entity
reference and ignore the parameter).
OptionalReplayWhen set to true, the save operation will BYPASS Validate() and the actual process of saving changes to the database but WILL invoke any associated actions (AI Actions, Entity Actions, etc...) Subclasses can also override the Save() method to provide custom logic that will be invoked when ReplayOnly is set to true
OptionalSkipWhen set to true, the entity will skip the asynchronous ValidateAsync() method during save. This is an advanced setting and should only be used when you are sure the async validation is not needed. The default behavior is to run the async validation and the default value is undefined. Also, you can set an Entity level default in a BaseEntity subclass by overriding the DefaultSkipAsyncValidation() getter property.
OptionalSkipIf set to true, any Entity Actions associated with invocation types of Create or Update will be skipped during the save operation
OptionalSkipIf set to true, an AI actions associated with the entity will be skipped during the save operation
OptionalSkipSetting this to true means that the system will not look for inconsistency between the state of the record at the time it was loaded and the current database version of the record. This is normally on because it is a good way to prevent overwriting changes made by other users that happened after your version of the record was loaded. However, in some cases, you may want to skip this check, such as when you are updating a record that you know has not been changed by anyone else since you loaded it. In that case, you can set this property to true to skip the check which will be more efficient.
Save options used when saving an entity record. Provides fine-grained control over the save operation including validation, action execution, and conflict detection.