Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
You can export and import meta-models. You also can compare two meta-models, which is useful during these operations.
The following classes referred are available in the Mediachase.BusinessFoundation.Data.Meta.Schema namespace.
Export a meta-model to a file with the MetaModelGenerator class. By default, MetaModelGenerator exports all elements; use the SelectedElements property of the MetaModelGenerator class to export custom elements.
Example: Exporting a meta-model to a file
// Create MetaModelGenerator
MetaModelGenerator generator = new MetaModelGenerator();
// Use generator.SelectedElements to export custom elements
try
{
// Open DataContext
DataContext.Current = new DataContext(connectionString);
// Load Save Commands
SchemaDocument schema = new SchemaDocument();
schema.LoadDefault();
generator.Schema = schema;
// Load Save Commands
XmlDocument xmlOutput = generator.Generate();
xmlOutput.Save(filePath);
}
catch (Exception ex)
{
}
Before you import a meta-model, you should compare meta-models and create synchronization commands. You can export and compare an existing meta-model with the one that you are about to import before actually importing it.
Example: Comparing two meta-models and create synchronization script
try
{
// Load Imported Meta-Model
List<ModuleManifest> installedModules = new List<ModuleManifest>();
XmlDocument xmlSrcMetaModel = new XmlDocument();
xmlSrcMetaModel.Load(srcMetaModelPath);
// Load Modules From Source Meta-Model
foreach (XmlNode xmlManifestNode in
xmlSrcMetaModel.SelectNode("//mediachase.businessFoundation.data.meta/description/moduleManifests/moduleManifest"))
{
ModuleManifest manifest =
McXmlSerializer.GetObject<ModuleManifest>(xmlManifestNode.OuterXml);
installedModules.Add(manifest);
}
// Load SchemaDocument
SchemaDocument schema = new SchemaDocument();
schema.LoadDefault(installedModules.ToArray());
// Load Original Meta-model
XmlDocument xmlDestMetaModel = new XmlDocument();
xmlDestMetaModel.Load(destMetaModelPath);
// Compare two Meta-models
SyncCommand\[] syncCommands = MetaModelSync.FindModifications(schema, xmlSrcMetaModel, xmlDestMetaModel);
// Save sync commands to file
McXmlSerializer.SaveObjectToFile<SyncCommand\[\]>(outputSyncFilePath, syncCommands);
}
catch (Exception ex)
{
}
When import a meta-model, follow these steps.
Example: Loading and executing synchronization commands
try
{
// Open DataContext
DataContext.Current = new DataContext(connectionString);
// Load Sync Commands
SchemaDocument schema = new SchemaDocument();
schema.LoadDefault();
// Load Sync Commands
SyncCommand\[] syncCommands =
McXmlSerializer.GetObjectFromFile<SyncCommand\[]>(filePath);
// Apply Sync Command
using (TransactionScope tran = DataContext.Current.BeginTransaction())
{
MetaModelSync.Execute(schema, syncCommands);
tran.Commit();
}
}
catch (Exception ex)
{
}
Last updated: Oct 12, 2015