sql >> Base de Datos >  >> RDS >> Oracle

ServiceStack OrmLite con múltiples servidores de bases de datos

Sí, es posible y el soporte para esto ya está integrado en OrmLiteConnectionFactory , consulte Ejemplo de fragmento Master SQLServer + Sqlite en la página de inicio del proyecto de OrmLite .

Básicamente, registraría su predeterminado conexión (o maestra) primero con:

var dbFactory = new OrmLiteConnectionFactory(
  "Data Source=host;Initial Catalog=RobotsMaster;Integrated Security=SSPI", 
  SqlServerDialect.Provider); 

Entonces registraría una conexión con nombre para cualquier otra conexión que desee admitir, por ejemplo:

dbFactory.RegisterConnection("shard-1", 
  "~/App_Data/{0}.sqlite".Fmt(shardId).MapAbsolutePath(),
    SqliteDialect.Provider);

Una vez que esté configurado, abrir una conexión sin especificar un nombre abrirá una conexión a la base de datos predeterminada, por ejemplo:

using (IDbConnection db = dbFactory.OpenDbConnection()) { ... } //Default DB

Si bien puede especificar un nombre para abrir una conexión con nombre a una base de datos con un proveedor diferente, por ejemplo:

using (var dbShard = dbFactory.OpenDbConnection("shard-1")) { ... } //Named DB

Usar manualmente diferentes proveedores de dialectos

Las diferencias entre las implementaciones del proveedor de SQL entre diferentes RDBMS están contenidas dentro de cada proveedor de dialecto. Entonces, si desea usar los métodos de extensión de conveniencia de OrmLite contra una implementación específica del proveedor ADO.NET, solo necesita asignar el ThreadStatic DialectProvider que desea usar, por ejemplo:

OrmLiteConfig.DialectProvider = SqlServerDialect.Provider;
var dbConn = new SqlConnection(SqlServerConnString);
dbConn.Select<Table>(); //All db access now uses the above dialect provider

Esto es esencialmente todo lo que RegisterConnection en OrmLiteConnectionFactory lo hace automáticamente por usted.

Como referencia, aquí están todos los proveedores de dialectos para OrmLite hasta este momento:

  • SqlServerDialect.Proveedor
  • SqliteDialect.Provider (diferentes impls 32/64 y Mono disponibles)
  • MySqlDialect.Proveedor
  • PostgreSqlDialect.Proveedor
  • OracleDialect.Proveedor
  • Dialecto Firebird.Proveedor