Sim, é possível e o suporte para isso já está embutido no
OrmLiteConnectionFactory
, consulte o Exemplo de estilhaço Master SQLServer + Sqlite na página inicial do projeto OrmLite
. Basicamente, você registraria seu padrão (ou mestre) conexão primeiro com:
var dbFactory = new OrmLiteConnectionFactory(
"Data Source=host;Initial Catalog=RobotsMaster;Integrated Security=SSPI",
SqlServerDialect.Provider);
Em seguida, você registraria uma conexão nomeada para todas as outras conexões que você deseja oferecer suporte, por exemplo:
dbFactory.RegisterConnection("shard-1",
"~/App_Data/{0}.sqlite".Fmt(shardId).MapAbsolutePath(),
SqliteDialect.Provider);
Uma vez configurado, abrir uma conexão sem especificar um nome abrirá uma conexão com o banco de dados padrão, por exemplo:
using (IDbConnection db = dbFactory.OpenDbConnection()) { ... } //Default DB
Embora você possa especificar um nome para abrir uma conexão nomeada para um banco de dados com um provedor diferente, por exemplo:
using (var dbShard = dbFactory.OpenDbConnection("shard-1")) { ... } //Named DB
Usar manualmente diferentes provedores de dialetos
As diferenças entre as implementações do SQL Provider entre diferentes RDBMSs estão contidas em cada provedor de dialeto. Portanto, se você quiser usar os métodos de extensão de conveniência do OrmLite em uma implementação específica do provedor ADO.NET, basta atribuir o ThreadStatic DialectProvider que deseja usar, por exemplo:
OrmLiteConfig.DialectProvider = SqlServerDialect.Provider;
var dbConn = new SqlConnection(SqlServerConnString);
dbConn.Select<Table>(); //All db access now uses the above dialect provider
Isso é basicamente tudo o que
RegisterConnection
em OrmLiteConnectionFactory faz automaticamente os bastidores para você. Para referência, aqui estão todos os provedores de dialeto para OrmLite até este ponto:
- SqlServerDialect.Provider
- SqliteDialect.Provider (diferentes 32/64 e impls Mono disponíveis)
- MySqlDialect.Provider
- PostgreSqlDialect.Provider
- OracleDialect.Provider
- FirebirdDialect.Provider