ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Core.Data Namespace / VersionManager Class / GetCurrentVersion Method
Example

In This Topic
    GetCurrentVersion Method
    In This Topic
    Gets the currently active Version. This method must be called on the MCT. Use QueuedTask.Run.
    Syntax
    Public Function GetCurrentVersion() As Version
    public Version GetCurrentVersion()

    Return Value

    The currently active Version.
    Exceptions
    ExceptionDescription
    A geodatabase-related exception has occurred.
    This method or property must be called within the lambda passed to QueuedTask.Run
    Example
    Reconciling and Posting a Version with its Parent in separate edit sessions
    {
      // Must be called within QueuedTask.Run
      void ReconcileAndPost(Geodatabase geodatabase)
      {
        // Get a reference to our version and our parent
        if (geodatabase.IsVersioningSupported())
        {
          using (VersionManager versionManager = geodatabase.GetVersionManager())
          using (Version currentVersion = versionManager.GetCurrentVersion())
          using (Version parentVersion = currentVersion.GetParent())
          {
            // Create a ReconcileOptions object
            ReconcileOptions reconcileOptions = new ReconcileOptions(parentVersion);
            reconcileOptions.ConflictResolutionMethod = ConflictResolutionMethod.Continue; // continue if conflicts are found
            reconcileOptions.ConflictDetectionType = ConflictDetectionType.ByRow; //Default
            reconcileOptions.ConflictResolutionType = ConflictResolutionType.FavorTargetVersion; //or FavorEditVersion
    
            // Reconcile
            ReconcileResult reconcileResult = currentVersion.Reconcile(reconcileOptions);
            if (!reconcileResult.HasConflicts)
            {
              //No conflicts, perform the post
              PostOptions postOptions = new PostOptions(parentVersion);
              //var postOptions = new PostOptions(); for default version
              postOptions.ServiceSynchronizationType = ServiceSynchronizationType.Synchronous; //Default
    
              // Post - Deprecated since Pro SDK 3.6 / Enterprise 12.0 . Use Reconcile(reconcileOptions, postOptions) instead.
              // currentVersion.Post(postOptions);
    
              currentVersion.Reconcile(reconcileOptions, postOptions);
            }
          }
        }
      }
    }
    Reconciling and Posting a Version with its Parent in the same edit session
    {
      // Must be called within QueuedTask.Run
      void ReconcileAndPost2(Geodatabase geodatabase)
      {
        // Get a reference to our version and our parent
        if (geodatabase.IsVersioningSupported())
        {
          using (VersionManager versionManager = geodatabase.GetVersionManager())
          using (Version currentVersion = versionManager.GetCurrentVersion())
          using (Version parentVersion = currentVersion.GetParent())
          {
            // Create a ReconcileOptions object
            ReconcileOptions reconcileOptions = new ReconcileOptions(parentVersion);
            reconcileOptions.ConflictResolutionMethod = ConflictResolutionMethod.Continue; // continue if conflicts are found
            reconcileOptions.ConflictDetectionType = ConflictDetectionType.ByRow; //Default
            reconcileOptions.ConflictResolutionType = ConflictResolutionType.FavorTargetVersion; //or FavorEditVersion
    
            PostOptions postOptions = new PostOptions(parentVersion);
            //var postOptions = new PostOptions(); for default version
            postOptions.ServiceSynchronizationType = ServiceSynchronizationType.Synchronous; //Default
    
            // Reconcile
            ReconcileResult reconcileResult = currentVersion.Reconcile(reconcileOptions, postOptions);
            if (reconcileResult.HasConflicts)
            {
              //TODO resolve conflicts
            }
          }
        }
      }
    }
    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