Skip to content

SaveRequestHandlerBase<TRow,TSaveRequest,TSaveResponse> class

namespace: Serenity.Services   assemblySerenity.Net.Services

Abstract base class for save request handlers that share state and mode neutral helper methods between synchronous and asynchronous save request handlers.

public abstract class SaveRequestHandlerBase<TRow, TSaveRequest, TSaveResponse> : 
    ISaveRequestHandler
    where TRow : class, IRow, IIdRow, new()
    where TSaveRequest : SaveRequest<TRow>, new()
    where TSaveResponse : SaveResponse, new()
parameter description
TRow Entity type
TSaveRequest Save request type
TSaveResponse Save response type
context Request context

Public Members

name description
Cache { get; } Gets the two level cache from the request context.
Connection { get; } Gets the current connection.
Context { get; } Gets the request context.
IsCreate { get; } Returns true if this is a Create operation.
IsUpdate { get; } Returns true if this is an Update operation.
Localizer { get; } Gets the localizer from the request context.
Old { get; protected set; } Gets the old entity for update.
Permissions { get; } Gets the permission service from the request context.
Request { get; protected set; } Gets the request object.
Response { get; protected set; } Gets the response object.
Row { get; protected set; } Gets the inserted entity for Create and the new entity for Update.
StateBag { get; } A state bag for behaviors to preserve state among their methods. It will be cleared before each request, e.g. Process call.
UnitOfWork { get; protected set; } Gets the current unit of work.
User { get; } Gets the current user from the request context.

Protected Members

name description
SaveRequestHandlerBase(…) Abstract base class for save request handlers that share state and mode neutral helper methods between synchronous and asynchronous save request handlers.
virtual ClearNonTableAssignments() Clears assignment for fields that are marked as non table field, e.g. fields that are not mapped, view, expression etc.
virtual CustomValidate(…) Calls custom validator.
virtual GetBehaviors() Gets the list of save behaviors.
virtual GetDisplayOrderFilter() Gets the display order filter for current group, if the entity implements IDisplayOrderRow interface
virtual GetEditableFields(…) Gets the list of editable fields. These are fields that have Insertable (if Create), or Updatable (if Update) flags, and have the insert or update permission based on the type of the current operation.
virtual GetRequiredFields(…) Gets the list of required fields based on editable list, and NotNull
virtual HandleNonEditable(…) Handles assignment to a non-editable field. If the field did not change in an update operation, it will be ignored by clearing the assignment. For non-table fields it will also be ignored.
virtual InvalidateCacheOnCommit() Attaches an handler to unit of work's OnCommit event to invalidate the cache items related to this row's cache group
virtual SetDefaultValue(…) Sets the default value (DefaultValueAttribute) for the field
virtual SetDefaultValues() Sets the default values for all fields (DefaultValueAttribute)
virtual SetTrimToEmptyFields() Sets values for TrimToEmpty fields.
virtual ValidateAndClearIdField() Validates and clears the ID field
virtual ValidateEditable() Validates editable fields.
virtual ValidateEditableFields(…) Validates editable fields, e.g. checks if the assigned fields are all in the editable set. Calls HandleNonEditable if not.
virtual ValidateFieldValues() Validates field values via ICustomValidator interface.
virtual ValidateIsActive() Validates that record is not soft deleted
virtual ValidatePermissions() Validates user permissions by checking InsertPermissionAttribute and UpdatePermissionAttribute, and ModifyPermissionAttribute or ReadPermissionAttribute if others are not found.
virtual ValidateRequired(…) Validates required fields

Exceptions

exception condition
ArgumentNullException context is null.

Remarks

Initializes a new instance of the class.

See Also