ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Core.Data Namespace / Geodatabase Class / GetVersionManager Method
Example

In This Topic
    GetVersionManager Method
    In This Topic
    Gets the VersionManager associated with this geodatabase if it supports versioning. This method must be called on the MCT. Use QueuedTask.Run.
    Syntax
    Public Function GetVersionManager() As VersionManager
    public VersionManager GetVersionManager()

    Return Value

    The VersionManager associated with this geodatabase if it supports versioning.
    Exceptions
    ExceptionDescription
    This geodatabase does not support versioning.
    Remarks
    If IsVersioningSupported returns false, calling this method will result in an exception.
    Example
    Connecting to a Version
    {
      // 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;
      }
    }
    Working with Versions
    {
      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");
        }
      });
    }
    Working with the Default Version
    {
      // 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;
        }
      }
    }
    Requirements

    Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also