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

ServiceStack OrmLite med flere databaseservere

Ja, det er muligt, og support til dette er allerede indbygget i OrmLiteConnectionFactory , se Master SQLServer + Sqlite shard eksempel på OrmLites projekthjemmeside .

Dybest set ville du registrere din standard (eller master) forbindelse først med:

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

Så ville du registrere en navngivet forbindelse for hver anden forbindelse, du ønsker at understøtte, f.eks.:

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

Når først det er konfigureret, åbnes en forbindelse uden at angive et navn, en forbindelse til standarddatabasen, f.eks.:

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

Mens du kan angive et navn for at åbne en navngivet forbindelse til en db med en anden udbyder, f.eks.:

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

Brug forskellige dialektudbydere manuelt

Forskellene mellem SQL Provider-implementeringerne mellem forskellige RDBMS'er er indeholdt i hver dialektudbyder. Så hvis du vil bruge OrmLites bekvemmelighedsudvidelsesmetoder mod en specifik ADO.NET-udbyderimplementering, skal du blot tildele den ThreadStatic DialectProvider du ønsker at bruge, f.eks.:

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

Dette er stort set alt hvad RegisterConnection i OrmLiteConnectionFactory gør automatisk bag kulisserne for dig.

Til reference her er alle dialektudbydere for OrmLite indtil dette punkt:

  • SqlServerDialect.Provider
  • SqliteDialect.Provider (forskellige 32/64 og Mono impl'er tilgængelige)
  • MySqlDialect.Provider
  • PostgreSqlDialect.Provider
  • OracleDialect.Provider
  • FirebirdDialect.Provider



  1. SQL OR Operator for begyndere

  2. SQL-Server:Er der et SQL-script, som jeg kan bruge til at bestemme forløbet af en SQL Server-sikkerhedskopierings- eller gendannelsesproces?

  3. Låser PESSIMISTIC_WRITE hele bordet?

  4. Hvordan indfanger/koder man specialtegn til SQL Server i java-appen?