Public Function GetVersionManager() As VersionManager
public VersionManager GetVersionManager()
Return Value
The VersionManager associated with this geodatabase if it supports versioning.
Public Function GetVersionManager() As VersionManager
public VersionManager GetVersionManager()
| Exception | Description |
|---|---|
| System.InvalidOperationException | This geodatabase does not support versioning. |
{
// Must be called within QueuedTask.Run
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;
}
}
{
await QueuedTask.Run(() =>
{
using (Geodatabase geodatabase = new Geodatabase(new DatabaseConnectionFile(new Uri("path\\to\\sde\\file"))))
using (VersionManager versionManager = geodatabase.GetVersionManager())
{
IReadOnlyList<string> versionNames = versionManager.GetVersionNames();
Version defaultVersion = versionManager.GetDefaultVersion();
string testVersionName = versionNames.First(v => v.Contains("Test"));
Version testVersion = versionManager.GetVersion(testVersionName);
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");
}
});
}
{
// Must be called within QueuedTask.Run
Version FindDefaultVersion(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;
}
// Check to see if the current version is default.
// Works with both branch and traditional versioning.
bool IsDefaultVersion(Version version)
{
Version parentVersion = version.GetParent();
if (parentVersion == null)
{
return true;
}
parentVersion.Dispose();
return false;
}
// Gets the default version.
// Works with both branch and traditional versioning.
// Note that this routine depends on IsDefaultVersion(), above.
Version GetDefaultVersion(Version version)
{
if (IsDefaultVersion(version))
{
return version;
}
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;
}
}
}
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)