Oracle
 sql >> Database >  >> RDS >> Oracle

ServiceStack OrmLite con più server di database

Sì, è possibile e il supporto per questo è già integrato in OrmLiteConnectionFactory , consulta Master SQLServer + esempio di shard Sqlite sulla home page del progetto di OrmLite .

Fondamentalmente registreresti il ​​tuo predefinito (o master) prima connessione con:

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

Quindi registreresti una connessione denominata per ogni altra connessione che desideri supportare, ad esempio:

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

Una volta configurato, l'apertura di una connessione senza specificare un nome aprirà una connessione al database predefinito, ad esempio:

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

Mentre puoi specificare un nome per aprire una connessione denominata a un db con un provider diverso, ad esempio:

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

Utilizza manualmente diversi fornitori di dialetto

Le differenze tra le implementazioni del provider SQL tra i diversi RDBMS sono contenute all'interno di ogni provider di dialetto. Quindi, se si desidera utilizzare i metodi di estensione convenienti di OrmLite rispetto a un'implementazione specifica del provider ADO.NET, è sufficiente assegnare il ThreadStatic DialectProvider che si desidera utilizzare, ad esempio:

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

Questo è essenzialmente tutto ciò che RegisterConnection in OrmLiteConnectionFactory fa automaticamente dietro le quinte per te.

Per riferimento, ecco tutti i fornitori di dialetti per OrmLite fino a questo punto:

  • Provider.SqlServerDialect
  • SqliteDialect.Provider (disponibili diverse impls 32/64 e Mono)
  • MySqlDialect.Provider
  • Provider.PostgreSqlDialect
  • Provider.OracleDialect
  • FirebirdDialect.Provider