Ano, je to možné a podpora pro toto je již zabudována do OrmLiteConnectionFactory
, viz Příklad hlavního SQLServeru + Sqlite na domovské stránce projektu OrmLite
.
V podstatě byste zaregistrovali své výchozí (nebo hlavní) připojení nejprve pomocí:
var dbFactory = new OrmLiteConnectionFactory(
"Data Source=host;Initial Catalog=RobotsMaster;Integrated Security=SSPI",
SqlServerDialect.Provider);
Pak byste zaregistrovali pojmenované připojení pro každé další připojení, které chcete podporovat, např.:
dbFactory.RegisterConnection("shard-1",
"~/App_Data/{0}.sqlite".Fmt(shardId).MapAbsolutePath(),
SqliteDialect.Provider);
Jakmile je toto nakonfigurováno, otevřením připojení bez zadání názvu se otevře připojení k výchozí databázi, např.:
using (IDbConnection db = dbFactory.OpenDbConnection()) { ... } //Default DB
I když můžete zadat název pro otevření pojmenovaného připojení k db s jiným poskytovatelem, např.:
using (var dbShard = dbFactory.OpenDbConnection("shard-1")) { ... } //Named DB
Ručně používat různé poskytovatele dialektů
Rozdíly mezi implementacemi SQL Provider mezi různými RDBMS jsou obsaženy v každém poskytovateli dialektu. Pokud tedy chcete použít metody rozšíření pohodlí OrmLite proti konkrétní implementaci poskytovatele ADO.NET, stačí přiřadit ThreadStatic DialectProvider, který chcete použít, např.:
OrmLiteConfig.DialectProvider = SqlServerDialect.Provider;
var dbConn = new SqlConnection(SqlServerConnString);
dbConn.Select<Table>(); //All db access now uses the above dialect provider
To je v podstatě vše, co RegisterConnection
v OrmLiteConnectionFactory automaticky provede zákulisí za vás.
Zde jsou pro srovnání všichni poskytovatelé dialektů pro OrmLite až do tohoto bodu:
- SqlServerDialect.Provider
- SqliteDialect.Provider (k dispozici jsou různé impls 32/64 a Mono)
- MySqlDialect.Provider
- Poskytovatel PostgreSqlDialect.Provider
- OracleDialect.Provider
- FirebirdDialect.Provider