ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Core.Data.DDL Namespace / FieldDescription Class / SetDomainDescription Method
The DomainDescription of the ArcGIS.Core.Data.Field.
The specific subtype code for the ArcGIS.Core.Data.Field's ArcGIS.Core.Data.Domain. This argument is optional. If it is not set or is set to null, the field's domain at the table level is set.
Example Version

SetDomainDescription Method
Sets the associated DomainDescription of the ArcGIS.Core.Data.Field at the table level if subtypeCode is not specified. Otherwise, sets the DomainDescription for the specific subtype code.
Syntax
public void SetDomainDescription( 
   DomainDescription domainDescription,
   Nullable<int> subtypeCode
)

Parameters

domainDescription
The DomainDescription of the ArcGIS.Core.Data.Field.
subtypeCode
The specific subtype code for the ArcGIS.Core.Data.Field's ArcGIS.Core.Data.Domain. This argument is optional. If it is not set or is set to null, the field's domain at the table level is set.
Example
Create Domain and Field Definition on KG Schemas with SchemaBuilder
    await QueuedTask.Run(() =>
    {
      using (var kg = GetKnowledgeGraph())
      {
        if (kg == null)
          return;

        var entity_name = "Fruit";

        //Domains are managed on the GDB objects...
        var fruit_fc = kg.OpenDataset<FeatureClass>(entity_name);
        var fruit_fc_def = fruit_fc.GetDefinition();

        var fieldFruitTypes = fruit_fc_def.GetFields()
              .FirstOrDefault(f => f.Name == "FruitTypes");
        var fieldShelfLife = fruit_fc_def.GetFields()
            .FirstOrDefault(f => f.Name == "ShelfLife");

        //Create a coded value domain and add it to a new field
        var fruit_cvd_desc = new CodedValueDomainDescription(
          "FruitTypes", FieldType.String, 
          new SortedList<object, string> {
                          { "A", "Apple" },
                          { "B", "Banana" },
                          { "C", "Coconut" }
          })  {
            SplitPolicy = SplitPolicy.Duplicate,
            MergePolicy = MergePolicy.DefaultValue
        };

        //Create a Range Domain and add the domain to a new field description also
        var shelf_life_rd_desc = new RangeDomainDescription(
                                      "ShelfLife", FieldType.Integer, 0, 14);

        var sb = new SchemaBuilder(kg);
        sb.Create(fruit_cvd_desc);
        sb.Create(shelf_life_rd_desc);

        //Create the new field descriptions that will be associated with the
        //"new" FruitTypes coded value domain and the ShelfLife range domain
        var fruit_types_fld = new ArcGIS.Core.Data.DDL.FieldDescription(
                                      "FruitTypes", FieldType.String);
        fruit_types_fld.SetDomainDescription(fruit_cvd_desc);

        //ShelfLife will use the range domain
        var shelf_life_fld = new ArcGIS.Core.Data.DDL.FieldDescription(
"ShelfLife", FieldType.Integer);
        shelf_life_fld.SetDomainDescription(shelf_life_rd_desc);

        //Add the descriptions to the list of field descriptions for the
        //fruit feature class - Modify schema needs _all_ fields to be included
        //in the schema, not just the new ones to be added.
        var fruit_fc_desc = new FeatureClassDescription(fruit_fc_def);

        var modified_fld_descs = new List<ArcGIS.Core.Data.DDL.FieldDescription>(
          fruit_fc_desc.FieldDescriptions);

        modified_fld_descs.Add(fruit_types_fld);
        modified_fld_descs.Add(shelf_life_fld);

        //Create a feature class description to modify the fruit entity
        //with the new fields and their associated domains
        var updated_fruit_fc =
          new FeatureClassDescription(entity_name, modified_fld_descs,
                                      fruit_fc_desc.ShapeDescription);

        //Add the modified fruit fc desc to the schema builder
        sb.Modify(updated_fruit_fc);

        //Run the schema builder
        try
        {
          if (!kg.ApplySchemaEdits(sb))
          {
            var err_msg = string.Join(",", sb.ErrorMessages.ToArray());
            System.Diagnostics.Debug.WriteLine($"Create domains error: {err_msg}");
          }
        }
        catch (Exception ex)
        {
          System.Diagnostics.Debug.WriteLine(ex.ToString());
        }
      }
    });
Requirements

Target Platforms: Windows 11, Windows 10

ArcGIS Pro version: 3.1 or higher.
See Also