2009-09-01 7 views
1

私は、sqlite3データベースまたはmysqlデータベースを使用できる必要があるアプリケーションを持っています。顧客は、2つの間で選択できるようにしたい(明らかに1つはローカルになり、1つはオンラインになる)。C#では複数のデータベースタイプを扱うことができますか?

一般的なメソッド(ExecuteReader、ExecuteScalarなど)をすべて持つデータベースインターフェイスを作成し、このインターフェイスを拡張するSQLite3Databaseクラスとこれを拡張するMySQLDatabaseクラスを作成することをお勧めします。アプリの初期化では、顧客が選択した設定に応じてデータベースインターフェイスが作成されます。しかし

私はこのルートをすれば、サーバーエクスプローラとデータセットを追加するための簡単な方法に、私緩いアクセスなど

だから私の質問があります...私はこれについて、正しい道を進んでいますか?私が欠けているより良い選択肢がありますか?そして、そうでない場合は、どのように私はVIAコードをデータ接続ポイントを作成するときにサーバーの探検家の使いやすさへのアクセスを得ることができますか?

ありがとうございました。

答えて

7

アプリケーションが自明でない場合は、ORMツールを検討する必要があります。

問題の100%を解決することはできませんが、問題が発生します。たとえば、NHibernateは現在のプロジェクトのORMであり、データベース固有のコードはほとんどありません。

+0

+1 NHibernateの場合+1。リンク:http://nhforge.org/Default.aspx –

+0

合意。車輪を再構築しないでください。いくつかのO/RMを評価し、ニーズに合ったものを選んでください。 – TrueWill

+0

パーフェクト、ありがとう。 – Kyle

1

OR/Mを使用すると、すべてのDB仕様を抽象化できます。

または、アプリケーションに独自のデータアクセスレイヤーを作成することができます。いくつかのDALインターフェイス(例えば、 'GetPersonById'メソッドを含む)を書くことができます。その後、あなたはこれらのインタフェースのためのいくつかの実装を書くことができます:MySQLの

  • SqlLite3を対象別の実装対象

    • 一実施。

    アプリケーションでは、実装に対して直接ではなく、インターフェイスに対してプログラムを作成します。 これらのインタフェースの正しい実装をインスタンス化するファクトリクラスを作成します(たとえば、コンフィグレーション設定に基づいて)。

  • 関連する問題