sql >> データベース >  >> RDS >> Oracle

複数のデータベース サーバーを備えた ServiceStack OrmLite

    はい、可能であり、これに対するサポートはすでに OrmLiteConnectionFactory に組み込まれています。 、OrmLite のプロジェクト ホームページのマスター SQLServer + Sqlite シャードの例 .

    基本的に、デフォルトを登録します (またはマスター) 最初の接続:

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

    次に、名前付き接続を登録します サポートしたい他のすべての接続について、例:

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

    構成が完了したら、名前を指定せずに接続を開くと、デフォルト データベースへの接続が開きます。例:

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

    名前を指定して、別のプロバイダーを使用してデータベースへの名前付き接続を開くことができます。例:

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

    異なる Dialect Provider を手動で使用する

    異なる RDBMS 間での SQL プロバイダーの実装の違いは、各ダイアレクト プロバイダー内に含まれています。したがって、特定の ADO.NET プロバイダーの実装に対して OrmLite の便利な拡張メソッドを使用する場合は、使用する ThreadStatic DialectProvider を割り当てるだけで済みます。例:

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

    これは基本的に RegisterConnection のすべてです OrmLiteConnectionFactory では、自動的に舞台裏で行われます。

    参考までに、これまでの OrmLite のすべての方言プロバイダーを以下に示します。

    • SqlServerDialect.Provider
    • SqliteDialect.Provider (異なる 32/64 および Mono impl が利用可能)
    • MySqlDialect.Provider
    • PostgreSqlDialect.Provider
    • OracleDialect.Provider
    • FirebirdDialect.Provider



    1. SQLServerのパフォーマンスを容易にする

    2. EntityFramework Coreを使用すると、PostgreSQLで自動インクリメントされた値が機能しない

    3. 選択クエリでゼロ行を確認する

    4. PostgreSQL9.6beta1用のPGLogical1.1パッケージ