Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ServiceStack OrmLite mit mehreren Datenbankservern

Ja, es ist möglich und die Unterstützung dafür ist bereits in die OrmLiteConnectionFactory integriert , siehe Master SQLServer + Sqlite-Shard-Beispiel auf der Projekthomepage von OrmLite .

Grundsätzlich würden Sie Ihre Standardeinstellung registrieren (oder Master-)Verbindung zuerst mit:

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

Dann würden Sie eine benannte Verbindung registrieren für jede andere Verbindung, die Sie unterstützen möchten, z. B.:

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

Sobald dies konfiguriert ist, öffnet das Öffnen einer Verbindung ohne Angabe eines Namens eine Verbindung zur Standarddatenbank, z. B.:

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

Während Sie einen Namen angeben können, um eine benannte Verbindung zu einer Datenbank mit einem anderen Anbieter herzustellen, z. B.:

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

Verwenden Sie manuell verschiedene Dialektanbieter

Die Unterschiede zwischen den SQL-Provider-Implementierungen verschiedener RDBMS sind in jedem Dialekt-Provider enthalten. Wenn Sie also die praktischen Erweiterungsmethoden von OrmLite für eine bestimmte ADO.NET-Anbieterimplementierung verwenden möchten, müssen Sie nur den ThreadStatic DialectProvider zuweisen, den Sie verwenden möchten, z. B.:

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

Dies ist im Wesentlichen alles, was RegisterConnection in OrmLiteConnectionFactory erledigt automatisch hinter den Kulissen für Sie.

Als Referenz finden Sie hier alle Dialektanbieter für OrmLite bis zu diesem Punkt:

  • SqlServerDialect.Provider
  • SqliteDialect.Provider (verschiedene 32/64- und Mono-Implementierungen verfügbar)
  • MySqlDialect.Provider
  • PostgreSqlDialect.Provider
  • OracleDialect.Provider
  • FirebirdDialect.Provider