Examples - Editor Classes
Practical examples for DMEEditor, ETL, Importing, Mapping, Defaults, Sync, and Forms
Table of Contents
DMEEditor Examples
Initialize and Open DataSource
var editor = new DMEEditor();
// Add connection
var props = new ConnectionProperties
{
ConnectionName = "MyDB",
DatabaseType = DataSourceType.SqlLite,
ConnectionString = "Data Source=./app.db"
};
editor.ConfigEditor.AddDataConnection(props);
// Open datasource
var state = editor.OpenDataSource("MyDB");
if (state != ConnectionState.Open)
throw new Exception("Failed to open datasource");
// Get datasource
var ds = editor.GetDataSource("MyDB");
var entities = ds.GetEntitesList();
Query Data
// Get all records
var allData = ds.GetEntity("Customers", new List<AppFilter>());
// Filtered query
var filtered = ds.GetEntity("Customers", new List<AppFilter>
{
new AppFilter { FieldName = "Country", Operator = "=", FilterValue = "USA" },
new AppFilter { FieldName = "Status", Operator = "=", FilterValue = "Active" }
});
// Execute SQL
var result = ds.RunQuery("SELECT * FROM Orders WHERE Total > 1000");
ETL Examples
Simple Data Copy
var source = editor.GetDataSource("SourceDB");
var target = editor.GetDataSource("TargetDB");
source.Openconnection();
target.Openconnection();
var copier = new ETLDataCopier(editor);
var result = await copier.CopyDataAsync(
source, "Customers",
target, "Customers",
progress: new Progress<PassedArgs>(p =>
Console.WriteLine($"Progress: {p.Messege}")));
Console.WriteLine($"Copied {result.RecordsProcessed} records");
Field Mapping
var mapping = new Dictionary<string, string>
{
["OldName"] = "NewName",
["OldEmail"] = "Email",
["PhoneNumber"] = "Phone"
};
var entityCopy = new ETLEntityCopyHelper(editor);
var result = await entityCopy.CopyEntityAsync(
source, "LegacyCustomers",
target, "Customers",
fieldMapping: mapping);
Data Import Examples
Basic Import
using var importer = new DataImportManager(editor);
importer.SourceDataSourceName = "ExternalCRM";
importer.SourceEntityName = "Contacts";
importer.DestDataSourceName = "MainDB";
importer.DestEntityName = "Customers";
// Configure
importer.LoadDestEntityStructure();
var result = await importer.RunImportAsync(
progress: new Progress<PassedArgs>(p =>
Console.WriteLine($"Importing: {p.Messege}")),
token: CancellationToken.None,
transformation: null,
batchSize: 1000);
Console.WriteLine($"Imported {result.RecordsProcessed} records");
Import with Transformation
var transform = new DataImportTransformationHelper();
transform.AddFieldMapping("FirstName", "Name");
transform.AddFieldMapping("LastName", "Surname");
transform.AddComputedField("FullName", row => $"{row["FirstName"]} {row["LastName"]}");
var result = await importer.RunImportAsync(
progress: progressReporter,
token: CancellationToken.None,
transformation: transform,
batchSize: 500);
Field Mapping Examples
Create Entity Map
var (errInfo, mapping) = MappingManager.CreateEntityMap(
editor,
srcEntityName: "Contacts",
srcDataSourceName: "ExternalCRM",
destEntityName: "Customers",
destDataSourceName: "MainDB");
if (errInfo.Flag == Errors.Ok)
{
// Auto-match by convention
MappingManager.AutoMapByConvention(mapping, NameMatchMode.Exact);
// Manual adjustments
mapping.EntityFields[0].FieldMapping.Add(new Mapping_rep_fields
{
FromFieldName = "Phone",
ToFieldName = "PhoneNumber",
ToFieldType = "string"
});
// Save
MappingManager.SaveEntityMap(editor, mapping);
}
Apply Mapping
var mappedData = MappingManager.ApplyMap(
editor,
mapping,
sourceData,
destDataSource: "MainDB");
Default Values Examples
Configure Defaults
DefaultsManager.Initialize(editor);
// Set static default
DefaultsManager.SetDefaultValue("MainDB", "Customers", "Status", "Active");
// Set rule-based default
DefaultsManager.SetDefaultRule("MainDB", "Customers", "CreatedDate",
"TODAY()");
// Set conditional default
DefaultsManager.SetDefaultRule("MainDB", "Customers", "Discount",
"IF(Country='USA', 0.10, 0.05)");
// Save
DefaultsManager.SaveDefaults("MainDB");
Apply Defaults During Import
var config = new DataImportConfiguration
{
ApplyDefaults = true,
DefaultValueResolver = DefaultsManager.ResolveDefaultValue
};
importer.SetImportConfiguration(config);
Data Sync Examples
Basic Sync
var syncManager = new BeepSyncManager(editor);
var schema = new DataSyncSchema
{
SourceDataSourceName = "SourceDB",
DestinationDataSourceName = "TargetDB",
SourceEntityName = "Customers",
DestinationEntityName = "Customers",
SourceSyncDataField = "CustomerId",
DestinationSyncDataField = "CustomerId",
SyncType = "Incremental",
SyncDirection = "SourceToDestination"
};
// Add field mappings
schema.MappedFields.Add(new FieldSyncData
{
SourceField = "Name",
DestinationField = "CustomerName"
});
syncManager.AddSyncSchema(schema);
var result = await syncManager.SyncDataAsync(schema,
progress: new Progress<PassedArgs>(p =>
Console.WriteLine($"Syncing: {p.Messege}")));
Console.WriteLine($"Synced {result.RecordsProcessed} records");
Conflict Resolution
var config = new SyncConfig
{
SourceConnection = "SourceDB",
TargetConnection = "TargetDB",
ConflictResolution = ConflictResolutionStrategy.Timestamp,
EnableCDC = true,
BatchSize = 1000
};
var result = await syncManager.ExecuteSync(config);
Forms Manager Examples
Setup Form with Master-Detail
var formsManager = new FormsManager(editor);
// Register master block
formsManager.RegisterBlock(
blockName: "Orders",
dataSourceName: "MyDB",
entityName: "Orders",
primaryKey: "OrderId");
// Register detail block
formsManager.RegisterBlock(
blockName: "OrderLines",
dataSourceName: "MyDB",
entityName: "OrderLines",
primaryKey: "LineId");
// Create master-detail relation
formsManager.CreateMasterDetailRelation(
masterBlock: "Orders",
detailBlock: "OrderLines",
masterField: "OrderId",
detailField: "OrderId");
// Open form
formsManager.OpenForm("OrderEntry");
Navigate and Edit
// Navigate records
formsManager.FirstRecord("Orders");
formsManager.NextRecord("Orders");
formsManager.PreviousRecord("Orders");
formsManager.LastRecord("Orders");
// Enter insert mode
formsManager.EnterInsert("Orders");
formsManager.SetFieldValue("Orders", "CustomerId", "CUST001");
formsManager.SetFieldValue("Orders", "OrderDate", DateTime.Now);
// Commit
var result = formsManager.Commit("Orders");
if (result.Flag != Errors.Ok)
Console.WriteLine($"Error: {result.Message}");