This document is archived and information here might be outdated. Recommended version. |
Provides access to members that control Workspace Editing. Note: the IWorkspaceEdit interface has been superseded by IWorkspaceEdit2. Please consider using the more recent version.
Name | Description | |
---|---|---|
AbortEditOperation | Aborts an edit operation. | |
DisableUndoRedo | Disables Undo and Redo of edit operations. | |
EnableUndoRedo | Enables Undo and Redo of edit operations. | |
HasEdits | True if there are any completed edit operations that need to be saved . | |
HasRedos | True if there are any completed undos that can be redone. | |
HasUndos | True if there are any completed edit operations that can be undone. | |
IsBeingEdited | True if the workspace is being edited. | |
RedoEditOperation | Causes a Redo to be performed on the last undo. | |
StartEditing | Starts editing the workspace. | |
StartEditOperation | Begins an edit operation. | |
StopEditing | Stops editing the workspace. | |
StopEditOperation | Ends an edit operation. | |
UndoEditOperation | Causes an Undo to be performed on the last edit operation. |
Classes | Description |
---|---|
VersionedWorkspace | VersionedWorkspace Object. |
Workspace | Workspace Object. |
The IWorkspaceEdit interface allows the application to start and stop edit sessions during which the objects in a geodatabase can be updated. An edit session corresponds to a long transaction. To start a non-versioned edit session against an ArcSDE datasource the IMultiuserWorkspaceEdit interface should be used. In fact, when programmatically editing objects within a ArcSDE database it is recommended that the IMultiuserWorkspaceEdit interface be used. The only data changes an application sees within an edit session are changes that are made by the application. Changes made by other concurrently executing applications (if allowed) are not seen until the edit session is saved or discarded.
When required to insert, update or delete objects, it is strongly recommended to perform the operation using an edit session and within an edit operation. Although (in most cases) these operations can be performed without explicitly starting and stopping an edit operation, the resulting change will be non-deterministic in respect to which state of the database the operation is associated or even the possibility of encountering an error when the change can not be applied to an open state. For these reasons all edits should be performed within an edit operation.
The geodatabase guarantees ‘unique instancing’ of row objects retrieved from the database within an edit session. Any data access call that retrieves a non-recycling object with a particular object ID will return the in memory instance of the object if the object has already been instantiated by the application. Such behavior is needed to ensure application correctness when updating complex object models—for example, models with relationship-based messaging or models with network features where updates to the geometry of a feature affect the geometry of topologically related features.
For this reason all object editing should be done within an edit session. The geodatabase data update APIs (such as IRow::Store, ITable::Update, and ITable::Insert ) will fail if you attempt to use them outside of an edit session on object and feature classes that are marked as requiring an edit session to ensure unique instancing semantics.
The geodatabase does not support nested transactions. When editing in a versioned environment on a SDE geodatabase only one transaction should be open at any one time. This means that if the same connection is used to edit multiple versions it is good practice to call StopEditing on the first edit session prior to calling StartEditing on another version. If another transaction is opened prior to closing the first transaction an open transaction error will be returned to the application. Programmatically this can be avoided by calling IsBeingEdited prior to StartEditing.
Applications should be aware that DDL (data definition language) operations made through ArcObjects geodatabase data access objects (for example, deleting feature dataset or creating a new feature class) use database transactions to ensure integrity of the data dictionary tables and commit the transaction at the end of the operation. Applications should not invoke DDL operations within an application transaction—application transactions should be restricted to DML operations (such as data updates).
The rules for correct object editing on a geodatabase are summarized below: