sql >> Databáze >  >> RDS >> Oracle

ServiceStack OrmLite s více databázovými servery

Ano, je to možné a podpora pro toto je již zabudována do OrmLiteConnectionFactory , viz Příklad hlavního SQLServeru + Sqlite na domovské stránce projektu OrmLite .

V podstatě byste zaregistrovali své výchozí (nebo hlavní) připojení nejprve pomocí:

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

Pak byste zaregistrovali pojmenované připojení pro každé další připojení, které chcete podporovat, např.:

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

Jakmile je toto nakonfigurováno, otevřením připojení bez zadání názvu se otevře připojení k výchozí databázi, např.:

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

I když můžete zadat název pro otevření pojmenovaného připojení k db s jiným poskytovatelem, např.:

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

Ručně používat různé poskytovatele dialektů

Rozdíly mezi implementacemi SQL Provider mezi různými RDBMS jsou obsaženy v každém poskytovateli dialektu. Pokud tedy chcete použít metody rozšíření pohodlí OrmLite proti konkrétní implementaci poskytovatele ADO.NET, stačí přiřadit ThreadStatic DialectProvider, který chcete použít, např.:

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

To je v podstatě vše, co RegisterConnection v OrmLiteConnectionFactory automaticky provede zákulisí za vás.

Zde jsou pro srovnání všichni poskytovatelé dialektů pro OrmLite až do tohoto bodu:

  • SqlServerDialect.Provider
  • SqliteDialect.Provider (k dispozici jsou různé impls 32/64 a Mono)
  • MySqlDialect.Provider
  • Poskytovatel PostgreSqlDialect.Provider
  • OracleDialect.Provider
  • FirebirdDialect.Provider



  1. Funkce SQL s parametry, které mohou být NULL

  2. Jak použít klíčové slovo 'as' k aliasu tabulky v Oracle?

  3. Najít uloženou proceduru, která vloží do konkrétní tabulky

  4. Vytvoření webové aplikace, která může pracovat offline, ukládat data a poté je synchronizovat se vzdáleným MySQL, když je online?