Example Step 4: Modify the Class-to-Storage Mapping
This topic describes how to update the mapping between runtime objects and the database.
To update to OrderObjectMappings.xml file
Create a copy of the OrderObjectMappings.xml file if you want to be able to revert to your original configuration. Edit the OrderObjectMappings.xml file to perform the rest of this procedure.
Define a table for the VirtualGiftCertificate class, and name the table VirtualGiftCertificates. Within the Tables element, create a Table element and define the columns and constraints of the table.
The Table element for the VirtualGiftCertificates table will look as follows:
<Table Name="VirtualGiftCertificates"> <Columns> <Column Name="VirtualGiftCertificateId" DataType="uniqueidentifier" /> <Column Name="OrderFormId" DataType="uniqueidentifier" IsNullable="false" /> <Column Name="OrderGroupId" DataType="uniqueidentifier" IsNullable="false" /> </Columns> <Constraints> <PrimaryKey Name="PK_VirtualGiftCertificates"> <ColumnRef Name="VirtualGiftCertificateId" /> </PrimaryKey> <ForeignKey Name="FK_VirtualGiftCertificates_OrderForms" ForeignTable="OrderForms" CascadeDelete="false"> <ColumnMatch Name="OrderFormId" ForeignName="OrderFormId" /> </ForeignKey > </Constraints> </Table>
Note
You must define a foreign key because data in the VirtualGiftCertificates table will be referenced by data in another table, in this case the OrderForms table.
Define the VirtualGiftCertificate class. Within the Classes element, create a Class element and define the properties of the class. You are only required to define the properties that you will map to the database.
The Class element for the VirtualGiftCertificate class will look as follows:
<Class Name="VirtualGiftCertificate"> <Property Name="VirtualGiftCertificateId" /> <Property Name="OrderGroupId" /> <Property Name="OrderFormId" /> ... </Class>
Define the mapping between the VirtualGiftCertificate class and the VirtualGiftCertificates table. Within the Mappings element, create a ClassTableMap element and define the mappings between properties of the class and columns of the table.
The ClassTableMap element for the mapping between the VirtualGiftCertificate class and the VirtualGiftCertificates table will look as follows:
<ClassTableMap Class="VirtualGiftCertificate" Table="VirtualGiftCertificates"> <PropertyMap Property="OrderGroupId" Column="OrderGroupId" /> <PropertyMap Property="OrderFormId" Column="OrderFormId" /> <PropertyMap Property="VirtualGiftCertificateId" Column="VirtualGiftCertificateId" /> ... </ClassTableMap>
Modify the mapping between the OrderForm class and the OrderForms table. Chane the name of the class from OrderForm to MyOrderForm.
<ClassTableMap Class="MyOrderForm" Table="OrderForms"> ... </ClassTableMap>
Modify the Class element for the OrderForm class. Change the name of the class to "MyOrderForm", and add a property named GiftCertificates to represent the collection of virtual gift certificates.
The Class element for the MyOrders class will look as follows:
<Class Name="MyOrderForm"> <Property Name="GiftCertificates"/> ... </Class>
For each collection that involves the OrderForm class, change the collection relationship to use the MyOrderForm class instead.
The modified CollectionRelationship elements will look as follows:
<CollectionRelationship Name="OrderFormPayments" ParentClass="MyOrderForm" ParentProperty="Payments" ChildClass="Payment" /> <CollectionRelationship Name="OrderFormLineItems" ParentClass="MyOrderForm" ParentProperty="LineItems" ChildClass="LineItem" /> <CollectionRelationship Name="OrderFormShipments" ParentClass="MyOrderForm" ParentProperty="Shipments" ChildClass="Shipment" /> <CollectionRelationship Name="OrderFormPromoCodeRecords" ParentClass="MyOrderForm" ParentProperty="PromoCodeRecords" ChildClass="PromoCodeRecord" />
Define the relationship between an order form and a virtual gift certificate. Within the CollectionRelationships element, add a new CollectionRelationship element to represent the fact that an order form contains a collection of virtual gift certificates.
The CollectionRelationship element that describes the relationship between the OrderForm class and the VirtualGiftCertificate class will look as follows:
<CollectionRelationship Name="OrderFormGiftCertificates" ParentClass="MyOrderForm" ParentProperty="GiftCertificates" ChildClass="VirtualGiftCertificate" />
Save the OrderObjectMappings.xml file.