How to use more than one database at a time
Kittox supports connecting to multiple databases simultaneously through the database routing feature. Each database can use a different adapter (ADO, FireDAC, DBExpress) and even a different database engine.
Step 1: Define your databases
In Config.yaml, add multiple entries under the Databases node. The entry named Main is used by default:
Databases:
Main: ADO
Connection:
ConnectionString: >
Provider=SQLOLEDB.1;User ID=sa;Password=xxx;
Initial Catalog=PrimaryDB;Data Source=%COMPUTERNAME%
Reporting: FD
Connection:
DriverID: MSSQL
Server: %COMPUTERNAME%
Database: ReportingDB
OSAuthent: YesSee Databases for the full list of adapters and connection parameters.
Step 2: Route models to databases
Add a DatabaseRouter node to any Model that should use a non-default database:
ModelName: REPORT_DATA
DatabaseRouter: Static
DatabaseName: Reporting
Fields:
...All read and write operations for that model will use the Reporting database instead of Main.
Step 3: Route at the view level (optional)
You can also apply database routing at the DataView level. This is useful when the same model should read from different databases in different views:
Type: Data
Controller: List
MainTable:
Model: SHARED_MODEL
DatabaseRouter: Static
DatabaseName: ReportingOther places that support routing
Database routing uses the same syntax everywhere a database connection is implied:
| Location | Use case |
|---|---|
Config.yaml/Auth | Authenticate against a different database |
Config.yaml/AccessControl | Store access control data in a separate database |
DynaList filters in a List | Fetch filter values from another database |
Custom routers
The Static router covers the most common case (fixed model-to-database mapping). For dynamic rules (e.g. routing based on naming conventions), you can create a custom router by inheriting from TKDatabaseRouter and overriding InternalGetDatabaseName.
See Database Routing for the full reference and advanced examples.
