示例#1
0
        private void Run()
        {
            // Model definition building
            BuildModelDefinition();
            // Applying mapping rules
            StorageMappingBuilder.Run(context);
            // Invoke user-defined transformations
            ApplyCustomDefinitions();
            // Clean-up
            RemoveTemporaryDefinitions();
            // Inspecting model definition
            ModelInspector.Run(context);

            // Applying fixup actions
            if (context.ModelInspectionResult.HasActions)
            {
                // Add handlers for hierarchies and types that could be created as a result of FixupProcessor work
                // This is done to inspect them right after construction with the help of ModelInspector
                var monitor = new TypeGenerationMonitor(context);
                monitor.Attach();

                // Applying fixup actions to the model definition.
                FixupActionProcessor.Run(context);

                modelDefBuilder.ProcessTypes();
                InspectAndProcessGeneratedEntities();
                BuildModel();
                monitor.Detach();
            }
            else
            {
                // Simply build model
                BuildModel();
            }
        }
示例#2
0
        private void InspectAndProcessGeneratedEntities()
        {
            foreach (var hieararchy in context.ModelInspectionResult.GeneratedHierarchies)
            {
                ModelInspector.Inspect(context, hieararchy);
            }
            foreach (var type in context.ModelInspectionResult.GeneratedTypes)
            {
                ModelInspector.Inspect(context, type);
            }
            context.ModelInspectionResult.GeneratedHierarchies.Clear();
            context.ModelInspectionResult.GeneratedTypes.Clear();

            if (context.ModelInspectionResult.HasActions)
            {
                // Applying fixup actions for generated entities.
                FixupActionProcessor.Run(context);
            }
        }
示例#3
0
 public override void Run(FixupActionProcessor processor)
 {
     processor.Process(this);
 }
 public abstract void Run(FixupActionProcessor processor);