複数の可能なデータソースへの接続(データベースに依存しない)に関して、C#での上記の各データベース接続方法の主な利点は何ですか?また、全面的に最高のパフォーマンスを発揮する可能性のあるパフォーマンスに関しては、DbConnectionとOleDbConnectionとOdbcConnectionとの比較
最後に、データベースに依存しないアプリケーションの特定の方法を避ける理由はありますか?
私のアプリケーションは現在Oleを使用しており、工場を使用している特定のデータベースに接続する際のいくつかの問題があり、代替案が検討されているためです。私はOdbcがOleよりも遅いと聞いてきましたが、これの背後には何か真理がありますし、実際のアプリケーションでは本当に目立っていますか?私が言ったの事前知識なしに任意のデータベースに接続することのできる作業データアクセス層を持っている必要があります私の現在のプロジェクトの状態について
私の要件を次のようにこのテーマで私の興味のため
理由は、データベース。したがって、私は任意のデータベースに固有のものを接続の点でハードコードすることはできません。指定された各データベースでの方言固有のステートメントの実行は、SQLクエリファクトリタイプの概念を使用して処理されています。同じことが、バインド変数の置換と書式設定にも適用されます。
UPDATE:これは、ADO.netとデータベースプロバイダファクトリを使用しているコードの作業バージョンです。これは、Adam Houldsworthの提案した基本クラスを使用していることを意味します。プロバイダはproviderName属性の接続文字列で指定されます。接続文字列は、データベース接続クラスで取得できるapp.configに格納されます。 Oracle用のnpgsqlやodacパッケージなどの正しいドライバがインストールされていれば、工場は正常に動作します。以下は、プロバイダ・ファクトリを使用した接続オブジェクトの基本コンストラクタを示すコードのサンプルです。
private readonly DbFactoryBindVariables m_bindVariables;
private readonly DbProviderFactory m_provider;
private string m_connectionString = String.Empty;
private readonly string m_providerName = String.Empty;
private DbConnection m_dbFactoryDatabaseConnection;
/// <summary>
/// Default constructor for DbFactoryDatabaseConnection.
/// </summary>
public DbProviderFactoryConnection()
{
m_providerName = ConfigurationManager.ConnectionStrings["ApplicationDefault"].ProviderName;
m_provider = DbProviderFactories.GetFactory(m_providerName);
m_dbFactoryDatabaseConnection = m_provider.CreateConnection();
m_connectionString = ConfigurationManager.ConnectionStrings["ApplicationDefault"].ConnectionString;
m_dbFactoryDatabaseConnection.ConnectionString = m_connectionString;
m_bindVariables = new DbFactoryBindVariables(m_dialect.ToLower(), DbFactoryBindSyntaxLoader.Load(this));
}
あなたの選択した.NET Frameworkのバージョン用のmachine.config内に既に存在しない場合、app.configファイルまたはweb.configファイルに次のような何かを追加する必要があります。
<system.data>
<DbProviderFactories>
<add name="Npgsql Data Provider"
invariant="Npgsql"
support="FF"
description=".Net Framework Data Provider for Postgresql Server"
type="Npgsql.NpgsqlFactory, Npgsql, Version=2.0.1.0, Culture=neutral,
PublicKeyToken=5d8b90d52f46fda7" />
</DbProviderFactories>
</system.data>
必要な接続文字列:この段階で
<add name="ApplicationDefault" connectionString="DATA SOURCE=TNSNAME;PASSWORD=PASS;USER ID=USER;" providerName="Oracle.DataAccess.Client;"/>
私は今、不可知論者は、アプリケーションのクライアントのバージョンを設定するときに正しい接続文字列が使用されて完全にデータベースすることができます。
興味のある方のためのアップデートを追加しました。 – CSharpened