Introduction
Meta models can be exported and imported, and you can also compare two meta models which is useful during these operations. Refer to Business Meta Model for more information about meta models in general.
All classes referred to here are available in the Mediachase.BusinessFoundation.Data.Meta.Schema namespace.
Exporting meta models
A meta model can be exported to a file. Use the MetaModelGenerator class to save a meta model to a file. 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
C#
MetaModelGenerator generator = new MetaModelGenerator();
try
{
DataContext.Current = new DataContext(connectionString);
SchemaDocument schema = new SchemaDocument();
schema.LoadDefault();
generator.Schema = schema;
XmlDocument xmlOutput = generator.Generate();
xmlOutput.Save(filePath);
}
catch (Exception ex)
{
}
Comparing meta models
Before importing a meta model, you should compare meta models and create synchronization commands. An existing meta model can be exported and compared with the one that you are about to import, before the actual import.
Example: Comparing two meta models and create synchronization script
C#
try
{
List<ModuleManifest> installedModules = new List<ModuleManifest>();
XmlDocument xmlSrcMetaModel = new XmlDocument();
xmlSrcMetaModel.Load(srcMetaModelPath);
foreach (XmlNode xmlManifestNode in
xmlSrcMetaModel.SelectNode("//mediachase.businessFoundation.data.meta/description/moduleManifests/moduleManifest"))
{
ModuleManifest manifest =
McXmlSerializer.GetObject<ModuleManifest>(xmlManifestNode.OuterXml);
installedModules.Add(manifest);
}
SchemaDocument schema = new SchemaDocument();
schema.LoadDefault(installedModules.ToArray());
XmlDocument xmlDestMetaModel = new XmlDocument();
xmlDestMetaModel.Load(destMetaModelPath);
SyncCommand\[] syncCommands = MetaModelSync.FindModifications(schema, xmlSrcMetaModel, xmlDestMetaModel);
McXmlSerializer.SaveObjectToFile<SyncCommand\[\]>(outputSyncFilePath, syncCommands);
}
catch (Exception ex)
{
}
Importing meta models
When importing a meta model you should first export the original meta model, compare it with the meta model to be imported, and create synchronization commands as previously described. Finally you then execute the synchronization commands.
Example: Loading and executing synchronization commands
C#
try
{
DataContext.Current = new DataContext(connectionString);
SchemaDocument schema = new SchemaDocument();
schema.LoadDefault();
SyncCommand\[] syncCommands =
McXmlSerializer.GetObjectFromFile<SyncCommand\[]>(filePath);
using (TransactionScope tran = DataContext.Current.BeginTransaction())
{
MetaModelSync.Execute(schema, syncCommands);
tran.Commit();
}
}
catch (Exception ex)
{
}
Do you find this information helpful? Please log in to provide feedback.