ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Core.Data Namespace / Table Class / GetControllerDatasets Method
Example

In This Topic
    GetControllerDatasets Method
    In This Topic
    Gets a IReadOnlyList of controller datasets of a specific Dataset type that this table or feature class participates in. This method must be called on the MCT. Use QueuedTask.Run.
    Syntax
    Public Function GetControllerDatasets() As IReadOnlyList(Of Dataset)
    public IReadOnlyList<Dataset> GetControllerDatasets()

    Return Value

    A IReadOnlyList of controller datasets of a specific Dataset type that this table or feature class participates in.
    Exceptions
    ExceptionDescription
    This table does not support controller datasets.
    A geodatabase-related exception has occurred.
    Remarks
    If IsControllerDatasetSupported returns false, calling this method will result in an exception.
    Example
    Get parcel fabric from table
    {
      var parcelFabricDataset = await QueuedTask.Run(() =>
      {
        ParcelFabric myParcelFabricDataset = null;
        if (table.IsControllerDatasetSupported())
        {
          // Tables can belong to multiple controller datasets, but at most one of them will be a parcel fabric
    
          IReadOnlyList<Dataset> controllerDatasets = table.GetControllerDatasets();
          foreach (Dataset controllerDataset in controllerDatasets)
          {
            if (controllerDataset is ParcelFabric)
            {
              myParcelFabricDataset = controllerDataset as ParcelFabric;
            }
            else
            {
              controllerDataset.Dispose();
            }
          }
        }
        return myParcelFabricDataset;
      });
    }
    Get a Utility Network from a Table
    {
      static UtilityNetwork GetUtilityNetworkFromTable()
      {
        UtilityNetwork utilityNetwork = null;
    
        Table table = MapView.Active.Map.GetStandaloneTablesAsFlattenedList().First().GetTable();
    
        // This routine obtains a utility network from a table
        if (table.IsControllerDatasetSupported())
        {
          // Tables can belong to multiple controller datasets, but at most one of them will be a UtilityNetwork
          IReadOnlyList<Dataset> controllerDatasets = table.GetControllerDatasets();
    
          foreach (Dataset controllerDataset in controllerDatasets)
          {
            if (controllerDataset is UtilityNetwork)
            {
              utilityNetwork = controllerDataset as UtilityNetwork;
            }
            else
            {
              controllerDataset.Dispose();
            }
          }
        }
        return utilityNetwork;
      }
    }
    Get a Utility Network from a Layer
    {
      static UtilityNetwork GetUtilityNetworkFromLayer(Layer unLayer)
      {
        UtilityNetwork utilityNetwork = null;
    
        Layer layer = MapView.Active.Map.GetLayersAsFlattenedList().First();
    
        // This routine obtains a utility network from a FeatureLayer, SubtypeGroupLayer, or UtilityNetworkLayer
        if (layer is UtilityNetworkLayer)
        {
          UtilityNetworkLayer utilityNetworkLayer = layer as UtilityNetworkLayer;
          utilityNetwork = utilityNetworkLayer.GetUtilityNetwork();
        }
    
        else if (layer is SubtypeGroupLayer)
        {
          CompositeLayer compositeLayer = layer as CompositeLayer;
          utilityNetwork = GetUtilityNetworkFromLayer(compositeLayer.Layers.First());
        }
    
        else if (layer is FeatureLayer)
        {
          FeatureLayer featureLayer = layer as FeatureLayer;
          using (FeatureClass featureClass = featureLayer.GetFeatureClass())
          {
            if (featureClass.IsControllerDatasetSupported())
            {
              IReadOnlyList<Dataset> controllerDatasets = new List<Dataset>();
              controllerDatasets = featureClass.GetControllerDatasets();
              foreach (Dataset controllerDataset in controllerDatasets)
              {
                if (controllerDataset is UtilityNetwork)
                {
                  utilityNetwork = controllerDataset as UtilityNetwork;
                }
                else
                {
                  controllerDataset.Dispose();
                }
              }
            }
          }
        }
        return utilityNetwork;
      }
    }
    Requirements

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

    ArcGIS Pro version: 3.0 or higher.
    See Also