Ja, det er muligt, og support til dette er allerede indbygget i OrmLiteConnectionFactory
, se Master SQLServer + Sqlite shard eksempel på OrmLites projekthjemmeside
.
Dybest set ville du registrere din standard (eller master) forbindelse først med:
var dbFactory = new OrmLiteConnectionFactory(
"Data Source=host;Initial Catalog=RobotsMaster;Integrated Security=SSPI",
SqlServerDialect.Provider);
Så ville du registrere en navngivet forbindelse for hver anden forbindelse, du ønsker at understøtte, f.eks.:
dbFactory.RegisterConnection("shard-1",
"~/App_Data/{0}.sqlite".Fmt(shardId).MapAbsolutePath(),
SqliteDialect.Provider);
Når først det er konfigureret, åbnes en forbindelse uden at angive et navn, en forbindelse til standarddatabasen, f.eks.:
using (IDbConnection db = dbFactory.OpenDbConnection()) { ... } //Default DB
Mens du kan angive et navn for at åbne en navngivet forbindelse til en db med en anden udbyder, f.eks.:
using (var dbShard = dbFactory.OpenDbConnection("shard-1")) { ... } //Named DB
Brug forskellige dialektudbydere manuelt
Forskellene mellem SQL Provider-implementeringerne mellem forskellige RDBMS'er er indeholdt i hver dialektudbyder. Så hvis du vil bruge OrmLites bekvemmelighedsudvidelsesmetoder mod en specifik ADO.NET-udbyderimplementering, skal du blot tildele den ThreadStatic DialectProvider du ønsker at bruge, f.eks.:
OrmLiteConfig.DialectProvider = SqlServerDialect.Provider;
var dbConn = new SqlConnection(SqlServerConnString);
dbConn.Select<Table>(); //All db access now uses the above dialect provider
Dette er stort set alt hvad RegisterConnection
i OrmLiteConnectionFactory gør automatisk bag kulisserne for dig.
Til reference her er alle dialektudbydere for OrmLite indtil dette punkt:
- SqlServerDialect.Provider
- SqliteDialect.Provider (forskellige 32/64 og Mono impl'er tilgængelige)
- MySqlDialect.Provider
- PostgreSqlDialect.Provider
- OracleDialect.Provider
- FirebirdDialect.Provider