When output has to be generated, either by exporting DDL SQL scripts or
by selecting Project -> Generate Source-code from the main menu or
F7, the Code Generation Task Viewer dialog is opened.
The Code Generation Task Viewer
The Code Generation Task Viewer dialog displays for the output type specified (e.g. DDL SQL create / Update scripts or normal source code), the Code Generation Tasks. Per task, the source (e.g. Entity Model, or the name of a Derived Model), the specifics (e.g. .NET version, language, preset etc.) and whether the task is currently valid and enabled are shown. This allows you to generate code from multiple sources (Entity Model, Derived models) with one click of a button.
The Code Generation Task Viewer allows you to edit the specifics (see below) and/or enable the task or not. Only valid tasks can be enabled. If there's one or more code generation task enabled, the user can perform them by click the Perform tasks button. If you want to debug templates, please check the Enable template debugging checkbox. See for more information about debugging templates the Debugging Templates topic.
Per enabled code generation task, the existing code generation pipeline is executed.
It's not required to generate each task into the same root folder, you can generate the output of each task in completely different folders using different namespaces and even target languages: each task stands on itself with respect to target language, .NET version, namespace and destination folder.
Additionally to the pre-created tasks per model, you can create new tasks for a given model or for the whole project. To do so, click the Add new code generation task for ... button which allows you to choose the source for the code generation task (entity model, a derived model if it's present and the whole project).
Each custom task for a given source behaves the same as the pre-created ones for the same source and offers the same selections of presets, target languages etc. Using this feature you can for instance add a custom task for the project to generate model documentation, as shown in the screenshot above.
When exporting DDL SQL, it's not possible to add additional custom tasks.
A code generation task is valid if all values required for executing the task are available, e.g. namespace, target folder. When you try to generate code for a new project it's likely at least one value required for the task is missing and the task is then marked 'invalid'. To make the task valid, edit the task as shown below, and specify the required values.
To edit the code generation task specifics, either double click it in the grid or select it and click the edit button at the bottom of the Code Generaton Task Viewer. Editing a code generation task opens the Code Generation Task Configurator dialog. By default the General settings tab is the only tab visible in the dialog (Simple view). Clicking Advanded... will show the additional tab, the Template Bindings tab.
Clicking OK will fill in the values specified in the edited code generation task. If the task is now valid, it will be marked as valid and can be executed.
The available tabs and their functions are:
- General settings
- This tab contains the information and selectors for the target language, target platform, root namespace, which template group to use and the root folder in which the output will be placed.
- Template bindings
- This tab is only visible when Advanced... is clicked on the General Settings tab and contains the template binding files and their current order. Template bindings bind a physical file to a TemplateID. A TemplateID is used by the code generators to select which template to use. You can bind multiple files to the same TemplateID, the one which is not overruled by a different binding due to the order of the template bindings on the Template bindings tab is chosen. Which target platform and which target framework is used in the project determine which template bindings are available.
It's key to have an ordering in the code generation task execution within a cycle: the entity model task is executed before derived model tasks, so the derived model tasks can obtain namespace names etc. properly. If the entity model task is disabled, the other tasks (if available) can still proceed but might not result in compilable code as they depend on elements which aren't generated. It's therefore recommeded to generate all tasks available every time you generate code.
All custom tasks you add will be executed after the pre-created tasks by the designer.