3.1.1 Abstract Data Model

This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate that implementations adhere to this model as long as their external behavior is consistent with that described in this document.

Changes to a property: There are two different models for persisting the new value of a property to the database. Changes to properties of a Folder object or a Logon object are saved implicitly in the database, whereas changes to properties of a Message object are not saved until the client sends a RopSaveChangesMessage ROP request ([MS-OXCROPS] section 2.2.6.3). Changes to properties of an Attachment object are not saved until the client sends a RopSaveChangesAttachment ROP request ([MS-OXCROPS] section 2.2.6.15) followed by a RopSaveChangesMessage ROP request.

Changes to a Stream object: There are two different models for persisting the new value of property that is opened as a Stream object to the database. For a Folder object, the new value of a property that is opened as a Stream object is persisted when the client sends a RopCommitStream ROP request ([MS-OXCROPS] section 2.2.9.4) or the client uses the RopRelease ROP ([MS-OXCROPS] section 2.2.15.3) to close the Stream object. For a Message object and an Attachment object, the persistence of the new value is the same as when the property is changed directly.

Caching property IDs: When the client uses the RopGetPropertyIdsFromNames ROP ([MS-OXCROPS] section 2.2.8.1) to map named properties to property IDs, the client can cache the property IDs for the length of its session. A property ID is not guaranteed to be the same for a new session. A property ID that is mapped from a named property is valid on any item within the Logon object.

Show: