Ja, het is mogelijk en ondersteuning hiervoor is al ingebouwd in de OrmLiteConnectionFactory
, zie de Master SQLServer + Sqlite shard-voorbeeld op de startpagina van het project van OrmLite
.
In principe zou u uw standaard . registreren (of master) verbinding eerst met:
var dbFactory = new OrmLiteConnectionFactory(
"Data Source=host;Initial Catalog=RobotsMaster;Integrated Security=SSPI",
SqlServerDialect.Provider);
Dan zou je een named connectie register registreren voor elke andere verbinding die u wilt ondersteunen, bijvoorbeeld:
dbFactory.RegisterConnection("shard-1",
"~/App_Data/{0}.sqlite".Fmt(shardId).MapAbsolutePath(),
SqliteDialect.Provider);
Als dat eenmaal is geconfigureerd, zal het openen van een verbinding zonder een naam op te geven een verbinding met de standaarddatabase openen, bijvoorbeeld:
using (IDbConnection db = dbFactory.OpenDbConnection()) { ... } //Default DB
Hoewel u een naam kunt opgeven om een benoemde verbinding met een db met een andere provider te openen, bijvoorbeeld:
using (var dbShard = dbFactory.OpenDbConnection("shard-1")) { ... } //Named DB
Handmatig verschillende dialectproviders gebruiken
De verschillen tussen de SQL Provider-implementaties tussen verschillende RDBMS'en zijn opgenomen in elke dialectprovider. Dus als u de gemaksextensiemethoden van OrmLite wilt gebruiken tegen een specifieke implementatie van een ADO.NET-provider, hoeft u alleen de ThreadStatic DialectProvider toe te wijzen die u wilt gebruiken, bijvoorbeeld:
OrmLiteConfig.DialectProvider = SqlServerDialect.Provider;
var dbConn = new SqlConnection(SqlServerConnString);
dbConn.Select<Table>(); //All db access now uses the above dialect provider
Dit is in wezen alles wat RegisterConnection
in OrmLiteConnectionFactory doet automatisch achter de schermen voor je.
Ter referentie zijn hier alle dialectproviders voor OrmLite tot nu toe:
- SqlServerDialect.Provider
- SqliteDialect.Provider (verschillende 32/64 en Mono impls beschikbaar)
- MySqlDialect.Provider
- PostgreSqlDialect.Provider
- OracleDialect.Provider
- FirebirdDialect.Provider