Please ensure Javascript is enabled for purposes of website accessibility
Powered by Zoomin Software. For more details please contactZoomin

AF SDK Getting Started

Lesson 4: Hints and tips

  • Last UpdatedJan 15, 2026
  • 1 minute read
  • Create an AFEnumerationSet

    AFEnumerationSet bTypeEnum = database.EnumerationSets.Add("Building Type");
    bTypeEnum.Add("Residential", 0);
    bTypeEnum.Add("Business", 1);

  • Set AFAttributeTemplate properties

    AFAttributeTemplate energyUsageAttrTemp =
    meterBasicTemplate.AttributeTemplates.Add("Energy Usage");
    energyUsageAttrTemp.Type = typeof(Single);
    energyUsageAttrTemp.Categories.Add(tsDataA);
    energyUsageAttrTemp.DefaultUOM = uom;
    energyUsageAttrTemp.DataReferencePlugIn =
    database.PISystem.DataReferencePlugIns["PI Point"];
    energyUsageAttrTemp.ConfigString =
    @"\\%@\Configuration|PIDataArchiveName%\%Element%.%Attribute%;UOM=kWh";

  • Set AFAttributeTemplate type to be an enumeration set

    AFAttributeTemplate attrTemp = elemTemp.AttributeTemplates["Building Type"];
    AFEnumerationSet enumSet = database.EnumerationSets["Building Type"];
    attrTemp.TypeQualifier = enumSet;

  • Check in the changes

    if (database.IsDirty)
    database.CheckIn();

  • Commit changes using bulk CheckIn

    In the exercise solution code, you perform CheckIn operations in bulk to improve performance. This is accomplished by calling CheckIn less frequently.

    Tip: For most situations, avoid calling CheckIn on every object change because each causes a call to the SQL server. When making multiple modifications, a general rule of thumb is to check in 200 objects at a time. If more control is required over the list of objects to be checked in, use the CheckIn() method on a PISystem instance. See PISystem.Checkin Method.

  • Add Overloads

    When adding AFElement objects to an AFElements collection, several Add methods are available. The methods can be roughly divided into two groups:

    • Methods that accept a string denoting the new AFElement name and return a reference to the newly created AFElement.


      AFElement meters = database.Elements.Add("Meters");

    • Methods that accept a reference to an existing AFElement object and return void

      A common use case for the second method is when adding an existing element as a weak reference to a parent element as in the following:

      AFReferenceType weakRefType = database.ReferenceTypes["Weak Reference"];
      AFElement meters = database.Elements["Meters"];
      AFElement buildingA = database.Elements["Meter Company"].Elements["Building A"];
      buildingA.Elements.Add(meters.Elements["Meter001"], weakRefType);

TitleResults for “How to create a CRG?”Also Available in