Evolving from one data type to another is not automatically available in MDriven due to the side effects of conversions.
MDriven provides different options for converting data types:
- Using the FormerNames property setting.
- Using a method.
- Using derived attributes.
- Using SafeCast.
Important to know before performing a conversion
- Data conversions have to be done meticulously as they can result in data loss. Backup your database before performing any conversions.
Using the FormerNames Property Setting
This solution involves renaming the attribute.
- Set new type on attribute.
- Rename the attribute to a new name and make sure to check Set Former Name checkbox.
- When you rename an attribute, the previous attribute will be dropped or destroyed when the attribute with a new name is created. Checking the Set Former Name checkbox will add the previous attribute name in the Database property setting FormerNames.
- Upload model. The MDriven evolver will try to transform and transfer the transformed data from the old attribute to the new attribute.
- After checking and making sure the data has been successfully transformed, repeat step 2 and step 3, renaming the attribute to its previous name.
Example showing conversion of a Price attribute from Integer to Decimal.
Using a Method
Using a method can be more useful in scenarios where you want to be more explicit about your conversion or want to combine the data of two attributes into one.
- Create new attribute and set new type on attribute
- Add a method to the class, go to method body and use EAL expressions for your transformation for the new attribute.
- While the Turnkey and Server applications are running, open the debugger.
- Run method in Action mode for the instances you would like to perform transformations on.
- Don't forget to save after executing the expression.
- The new attribute with the new type can now be used within the ViewModels. Or, the current attribute can be renamed to something else using method 1 of the FormerNames property setting and the new attribute with preferred type can use the name available in the ViewModels. This eliminates the need to make changes to ViewModels.
For example - below, after preforming the transformations, set the Price attribute to maybe OldPrice and set new attribute xPrice to Price.
Example showing how to convert a Price attribute from Integer to Decimal type and increment price by 1000
Using Derived Attributes
Using derived attributes ensures there are no side effects on your data. With this option, current data is retained and you can try other data conversions and transformations without affecting the data. Derived attributes provide a simpler way to test and use new data types and transformations. They are easy to create and remove.
You can use the new data attributes with the old data type attributes, incase you change your mind. Just delete the new derived attribute and continue using your old data type attribute.
- Deleting a derived attribute will not have any effect on your data in the database.
- Derived attributes ensure that current data is retained in its state of truthfulness and the new type is also available.
- Derived attributes can also be used for complex transformations.
Example showing how to convert Price attribute from Integer to Decimal type and increment price by 1000
Summary
- Use derived attributes to test new data types or new attributes and tranformations.
- Use methods for more explicit conversions like combining the data of two attributes or other computations.
- Use the FormerNames property setting after testing to make the new attributes and types changes permanent.