public VersionManager GetVersionManager()
Public Function GetVersionManager() As VersionManager
Return Value
The VersionManager associated with this geodatabase if it supports versioning.
public VersionManager GetVersionManager()
Public Function GetVersionManager() As VersionManager
Exception | Description |
---|---|
System.InvalidOperationException | This geodatabase does not support versioning. |
public Geodatabase ConnectToVersion(Geodatabase geodatabase, string versionName) { Geodatabase connectedVersion = null; if (geodatabase.IsVersioningSupported()) { using (VersionManager versionManager = geodatabase.GetVersionManager()) using (Version version = versionManager.GetVersion(versionName)) { connectedVersion = version.Connect(); } } return connectedVersion; }
public async Task WorkingWithVersions() { await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() => { using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file")))) using (VersionManager versionManager = geodatabase.GetVersionManager()) { IReadOnlyList<Version> versionList = versionManager.GetVersions(); Version defaultVersion = versionManager.GetDefaultVersion(); IEnumerable<Version> publicVersions = versionList.Where( version => version.GetAccessType() == VersionAccessType.Public); Version qaVersion = defaultVersion.GetChildren().First( version => version.GetName().Contains("QA")); Geodatabase qaVersionGeodatabase = qaVersion.Connect(); FeatureClass currentFeatureClass = geodatabase.OpenDataset<FeatureClass>("featureClassName"); FeatureClass qaFeatureClass = qaVersionGeodatabase.OpenDataset<FeatureClass>("featureClassName"); } }); }
// Check to see if the current version is default. // Works with both branch and traditional versioning. public bool IsDefaultVersion(Version version) { Version parentVersion = version.GetParent(); if (parentVersion == null) { return true; } parentVersion.Dispose(); return false; } public bool IsDefaultVersion(Geodatabase geodatabase) { if (!geodatabase.IsVersioningSupported()) return false; using (VersionManager versionManager = geodatabase.GetVersionManager()) using (Version currentVersion = versionManager.GetCurrentVersion()) { return IsDefaultVersion(currentVersion); } } // Gets the default version. // Works with both branch and traditional versioning. // Note that this routine depends on IsDefaultVersion(), above. public Version GetDefaultVersion(Version version) { if (IsDefaultVersion(version)) { return version; } else { Version parent = version.GetParent(); Version ancestor = GetDefaultVersion(parent); if (parent != ancestor) { parent.Dispose(); //If the versioning tree is more than 2 deep, we want to dispose any intermediary versions } return ancestor; } } public Version GetDefaultVersion(Geodatabase geodatabase) { if (!geodatabase.IsVersioningSupported()) return null; using (VersionManager versionManager = geodatabase.GetVersionManager()) { Version currentVersion = versionManager.GetCurrentVersion(); Version defaultVersion = GetDefaultVersion(currentVersion); if (currentVersion != defaultVersion) { currentVersion.Dispose(); // If we are not pointing to default, we want to dispose this Version object } return defaultVersion; } }
Target Platforms: Windows 11, Windows 10