一版本是什么?(What is Version?)
版本(version)是ArcGIS软件在多用户关系数据库基础上依托ArcSDE服务而提供的长事务处理工具在个人geodatabase中无法实现版本功能
Versioning allows multiple users to edit spatial and tabular data simultaneously in a long transaction environment Users can directly modify the database without having to extract data or lock features in advance The object model provides functionality to create and administer versions register and unregister classes as versioned detect differences between versions and reconcile and post versions 一版本是什么?(What is Version?)
版本(version)是ArcGIS软件在多用户关系数据库基础上依托ArcSDE服务而提供的长事务处理工具在个人geodatabase中无法实现版本功能
Versioning allows multiple users to edit spatial and tabular data simultaneously in a long transaction environment Users can directly modify the database without having to extract data or lock features in advance The object model provides functionality to create and administer versions register and unregister classes as versioned detect differences between versions and reconcile and post versions
Geodatabase数据模型提供的版本化机制允许多用户在长事务处理环境中同时编辑空间和属性数据用户无须预先数据复制和锁定要素就可以直接编辑这一数据模型提供了诸如以下的功能创建和管理版本注册和不注册要素类检测各个版本之间的差异协调及提交版本
二怎样来理解版本?(How to Understand Version?)
版本是命了名字的geodatabase状态你可以使用版本来模拟工程设计建造工作以及geodatabase的一个快照还有任何类型的涉及正在进展的what if 问题研究的流程
版本跨越整个geodatabase并且拥有属性在ArcCatalog中你可以指定哪些对象在geodatabase中是版本化的你可以选择性的指定哪些数据要素集要素类还有表注册成为版本通过设置权限你可以控制其它用户对你的数据的版本是否可见
同一个geodatabase中允许多个版本的存在
版本之间的本质区别在于行为状态而不是方案版本创建之后便呈现给你所有编辑工作的无中断视图其中行的状态反应了所有的对象添加删除以及修改操作这些状态的变化都被保存在它的归档文件中
每个版本geodatabase都有一个默认的(default)版本默认版本实际是geodatabase本身
三版本与版本之间的关系
默认版本是所有版本的起始版本(ancestor)除了默认版本每个版本只能拥有一个父版本在确保该版本的所有子版本被删除后该版本可以被删除
版本中的编辑变化可被协调并提交给另外一个版本(这涉及到geodatabase复制将另外专门讨论)
用户可以连接任意一个授权于他的版本
四AE提供的类图与接口
VersionedWorkspace类及其接口
A VersionedWorkspace is a Workspace that supports multiuser editing and multiple representations of features classes and tables in a relational database system VersionedWorkspaces support the IVersionedWorkspace interface
VersionedWorkspace类是Workspace类的一个子类在关系数据库系统中它允许多用户编辑以及要素类及数据表多样化的表达它向用户提供了IVersionedWorkspace接口
A list of all versions to which the user has permissions can be retrieved using the Versions property The versions returned are either owned by the connected user or have public access
通过IVersionedWorkspace接口提供的Versions的属性用户可以得到授予他们访问权限的VersionedWorkspace中的所有版本
通过Versions属性得到的对象是一个枚举型变量——EnumVersionInfo
通过IVersionedWorkspace接口提供的FindVersion方法用户可以通过版本名称进行查找而得到该版本
The IVersion interface is used to manage the properties of a version as well as create new versions Creating a new version requires an existing version to be the parent of the new version When the new version is created the parent and child versions are identical
IVersion接口向用户提供了创建及管理版本属性的功能创建一个新版本要求一个已经存在的版本作为其父版本当新版本被创建时版本之间的关系(父与子)也就被确立了
下面是更新版本属性的C#代码示例
//假设你已经得到dataset的引用 IVersion version = (IVersion)datasetWorkspace; IVersionInfo versionInfo = versionVersionInfo; if(versionInfoIsOwner) { versionAccess = esriVersionAccessesriVersionAccessPublic; }
DataSet类与IVersionedObject and IVersionedObject接口
通过IVersionedOjbect或IVersionedObject接口提供的RegisterAsVersioned方法用户可以注册或不注册要素数据集或要素类为版本如果注册为版本则将在数据库中创建两个额外的表以记录版本的行为状态发生的变化
Table类与IVersionedTableIConflictClass接口:
在进行协调操作之前一般需要通过IVersionedTabled接口提供的Differences方法来检测源版本与目标版本之间存在的沖突
经过协调(Reconcile)处理后IConflictClass接口提供了得到沖突选择集的机制通过其提供的DeleteUpdateUpdateDeleteUpdateUpdates属性用户可以得到相应的SelectionSet