MDP lets you extend any system object with a series of meta-fields. It is similar to object-oriented programming. For example, in object-oriented programming, you can create a base Order class, and then a **Purchase Order Type**Â object called PurchaseOrder, which inherits its properties and adds specific fields.
The root meta-class is based on a database table called _system meta-class_. Consider that an abstract meta-class which you must extend to use when associating extended new attributes with a new meta-class. Order becomes a system meta-class, and PurchaseOrder becomes a meta-class that you can extend.
The instance of the meta-class that holds values is called meta-object.
Name | Description |
Binary | MSSQL Common Type |
Bit | MSSQL Common Type |
Char | MSSQL Common Type |
DateTime | MSSQL Common Type |
Decimal | MSSQL Common Type |
Float | MSSQL Common Type |
Image | MSSQL Common Type |
Int | MSSQL Common Type |
Money | MSSQL Common Type |
NChar | MSSQL Common Type |
NText | MSSQL Common Type |
NVarChar | MSSQL Common Type |
Real | MSSQL Common Type |
UniqueIdentifier | MSSQL Common Type |
SmallDateTime | MSSQL Common Type |
SmallInt | MSSQL Common Type |
SmallMoney | MSSQL Common Type |
Text | MSSQL Common Type |
Timestamp | MSSQL Common Type |
TinyInt | MSSQL Common Type |
VarBinary | MSSQL Common Type |
VarChar | MSSQL Common Type |
Variant | MSSQL Common Type |
Numeric | MSSQL Common Type |
Sysname | MSSQL Common Type |
Integer | Metadata Type |
Boolean | Metadata Type |
Date | Metadata Type |
Metadata Type | |
URL | Metadata Type |
ShortString | Metadata Type |
LongString | Metadata Type |
LongHtmlString | Metadata Type |
DictionarySingleValue | Metadata Type |
DictionaryMultiValue | Metadata Type |
EnumSingleValue | Metadata Type |
EnumMultiValue | Metadata Type |
StringDictionary | Metadata Type |
File | Metadata Type |
ImageFile | Metadata Type |
MetaObject | Metadata Type |
Not all properties have a visual designer associated with them, but you can use all of them to extend the meta-class.
The MDP is designed to give the resulting database structure the fastest performance. When a meta-class is created, the container data table and history tables are created with a corresponding set of stored procedures and full text indexes (if full text functionality is enabled). The appropriate indexes are also put.
## Meta-fields and Meta-classes
### Meta-fields
Meta-fields describe different properties associated with an element inside Optimizely Customized Commerce. You can create a meta-field of any type supported by Metadata Plus.
### Meta-classes
Customized Commerce uses meta-classes to describe different types of elements, such as Categories and Products, that are used in the creation and extension of the Commerce solutions developed. Meta-class is a collection of meta-fields. The following types of meta-classes are defined:
Mediachase.MetaDataPlus.System. Used for the built-in OrderGroup elements of Customized Commerce.
Mediachase.MetaDataPlus.User. Created when a user defines a new meta-class for a OrderGroup. It is always an extension of one the existing System meta-classes.
### Use meta-classes and meta-fields
It is important to understand the concepts of a meta-class and meta-field, which form the basis for Categories and Products, to fully understand how they work within Customized Commerce. For a better understanding of meta-fields and meta-classes, consider an example of creating a product Book. Book has the following properties:
Name
ISBN
Author
Price
To duplicate this product inside your solution, create a BookClass meta-class with the Entry meta-class as its parent. In this example, BookClass is of type Mediachase.MetaDataPlus.User, and the built-in Product meta-class is of type Mediachase.MetaDataPlus.System.Â
Next, assign the properties of Book to your BookClass by creating a meta-attribute for each Property, then assigning them to your BookClass. For example, the Name property could be a meta-attribute of type ShortString, and Price can be a meta-attribute of type int. After you create these meta-attributes, assign them to your BookClass.