I'd like to propose an enhancement to the DBML language that would ease the management of large and complex schemas, especially in projects that progress through multiple phases. I have two potential approaches I'd like to present.
Background:
At my job, we're in an advanced phase of a project using DBML, with many tables and enums already created. The need to manage and maintain code between project phases is growing, and I see an opportunity to improve modularity and code reuse with import and export support.
Proposal 1: Direct support for imports and exports
Imports: Introduce new syntax to import other DBML files. For instance:
import 'path/to/other/file.dbml'
Exports: Allow specifying which elements from the current file should be exported.
export Table User {
Proposal 2: Preprocessing system akin to C's "include"
Instead of handling imports and exports directly within the language, we could introduce a preprocessing system. Developers would use an "include" syntax to stitch together various DBML files into one during a preprocessing phase. This approach would hide the modularity from the DBML engine, which would see a single, unified file.
For example:
include "path/to/other/file.dbml"
Common Benefits:
Modularity: Facilitates reading and maintenance by breaking schemas into logical modules.
Reusability: Common definitions can be set once and then reused.
Potential Challenges:
Conflict resolution: Clear strategy to handle name conflicts between files.
Circular loading: Avoiding infinite loops from mutual imports.
I hope you find these proposals of interest. I am willing to collaborate on the implementation and clarify any questions.
Hi,
I'd like to propose an enhancement to the DBML language that would ease the management of large and complex schemas, especially in projects that progress through multiple phases. I have two potential approaches I'd like to present.
Background:
At my job, we're in an advanced phase of a project using DBML, with many tables and enums already created. The need to manage and maintain code between project phases is growing, and I see an opportunity to improve modularity and code reuse with import and export support.
Proposal 1: Direct support for imports and exports
Proposal 2: Preprocessing system akin to C's "include"
Instead of handling imports and exports directly within the language, we could introduce a preprocessing system. Developers would use an "include" syntax to stitch together various DBML files into one during a preprocessing phase. This approach would hide the modularity from the DBML engine, which would see a single, unified file.
For example:
Common Benefits:
Potential Challenges:
I hope you find these proposals of interest. I am willing to collaborate on the implementation and clarify any questions.
Best regards