Hide menu Last updated: Oct 12 2015

A MetaField object represent a meta-class field. Fields represent information that an object contains. Fields are like variables because they can be directly read or set. For example, if you have an object named Car, you can store its color in a field named Color.

Note: When you create and delete meta-enums, remember that you can modify a meta-model only in Design mode. See the MetaClassManager class section.

From the MetaField object, you can get complete information about fields:

  • Name
  • meta-Type
  • Default Value
  • Formula for auto-calculated columns
  • Is Nullable
  • Is ReadOnly
  • Is Primary Key

Note: Business Foundation (BF) uses a meta-field installer assigned to the meta-type, to add meta-fields to meta-classes.

Getting a meta-field collection

The collection of meta-fields is available from the MetaClass.Fields property, and it returns a MetaFieldCollection object.

Example: The following example writes all fields to trace

C#
foreach (MetaField field in mc.Fields)
{
 System.Diagnostics.Trace.WriteLine(field.Name);
}

Creating a meta-field

Call the CreateMetaField method of the MetaClass class, passing name, friendly name, type, is nullable flag, default value and attributes to create a new meta-field. The attributes depend on the meta-type.

Example: Create a new Guid meta-field

C#
public MetaField CreateGuid(string name, string friendlyName, bool isNullable)
{
if (name == null)
throw new ArgumentNullException("name");
if (friendlyName == null)
throw new ArgumentNullException("friendlyName");
AttributeCollection attr = new AttributeCollection();
string defaultValue = isNullable ? string.Empty : "newid()";
MetaField retVal = this.MetaClass.CreateMetaField(name, friendlyName, MetaFieldType.Guid, isNullable, defaultValue, attr);
return retVal;
}

Deleting a meta-field

Call the DeleteMetaField method of the MetaClass class, passing the meta-field object, to delete a field from the meta-class.

Example: Find column by name and drop

C#
// Delete field
mc. DeleteMetaField(mc.Fields\["Book Title"]);

Comments