Mixed-mode Repository 1.0 and Repository 2.0 Usage
It is conceivable that a Microsoft® Repository version 1.0 application might be run on the Repository version 2.0 engine, in which versioning operations are performed by other applications on the same repository. The engine of course has to respect the semantics of versioning, and some of those semantics will necessarily be visible to the nonversioning application. A Repository 1.0 application can only see these effects when operating on a repository database in which Repository 2.0 applications are performing version and workspace operations. These effects do not arise when all applications on a repository database are following Repository 1.0 semantics. In addition to the effects mentioned above, the following could arise:
- A Repository 1.0 application can retrieve an object using get_Object() (it gets the resolved version), delete it (the version is deleted), and still use get_Object() a second time (the call resolves to a different version).
- Since all objects are unfrozen in Repository 1.0, updates never failed in Repository 1.0. However, in Repository 2.0, all update operations (property and origin collection updates) on a frozen version or a checked-out version will fail.
- In Repository 2.0, a delete operation on a checked-out version or a version with a successor will fail. Neither of these situations could arise in Repository 1.0.
- In Repository 1.0, IRelationship::Delete() removes the relationship entirely so that the relationship no longer exists at the origin or the destination objects. In Repository 2.0, if we have navigated from the destination side, the relationship from the origin version to any other versions of the destination continues to exist after the deletion. If we have navigated from the origin side, the relationship from that version to all versions of the destination in the relationship is removed. Similar behavior holds true for IRelationshipCol::Remove() and ITargetObjectCol::Remove().
- In Repository 1.0, delete propagation stops at an object if it is the destination of some other relationship of the same type. In Repository 2.0, in addition to this condition, delete propagation stops at an unchangeable version (frozen or checked out to a different workspace) and versions that have incoming relationships (of any type) from a frozen origin (that is, no error).
(c) 1988-1998 Microsoft Corporation. All Rights Reserved.