Oracle
 sql >> Base de données >  >> RDS >> Oracle

ServiceStack OrmLite avec plusieurs serveurs de base de données

Oui, c'est possible et le support pour cela est déjà intégré dans OrmLiteConnectionFactory , consultez le Exemple de partition Master SQLServer + Sqlite sur la page d'accueil du projet OrmLite .

Fondamentalement, vous enregistreriez votre par défaut connexion (ou maître) d'abord avec :

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

Ensuite, vous enregistreriez une connexion nommée pour toute autre connexion que vous souhaitez prendre en charge, par exemple :

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

Une fois configuré, l'ouverture d'une connexion sans spécifier de nom ouvrira une connexion à la base de données par défaut, par exemple :

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

Alors que vous pouvez spécifier un nom pour ouvrir une connexion nommée à une base de données avec un fournisseur différent, par exemple :

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

Utiliser manuellement différents fournisseurs de dialectes

Les différences entre les implémentations du fournisseur SQL entre les différents SGBDR sont contenues dans chaque fournisseur de dialecte. Donc, si vous souhaitez utiliser les méthodes d'extension de commodité d'OrmLite contre une implémentation de fournisseur ADO.NET spécifique, il vous suffit d'attribuer le ThreadStatic DialectProvider que vous souhaitez utiliser, par exemple :

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

C'est essentiellement tout ce que RegisterConnection dans OrmLiteConnectionFactory s'occupe automatiquement des coulisses pour vous.

Pour référence, voici tous les fournisseurs de dialectes pour OrmLite jusqu'à présent :

  • SqlServerDialect.Provider
  • SqliteDialect.Provider (différentes applications 32/64 et Mono disponibles)
  • MySqlDialect.Provider
  • PostgreSqlDialect.Provider
  • OracleDialect.Provider
  • FirebirdDialect.Provider