5

接続文字列のみに依存して、SQL Server または MySQL のいずれかに対して機能するデータベースに依存しないコードを C# で構築することは可能ですか?

データベース サーバーで SQL をスローし、非常に単純な行/列のセットを返すものを探していると思います。このデータベースは、SQL、MySQL、Access、Filemaker など、何でもかまいません。すべてのデータベースには独自のドライバーとオブジェクト ライブラリがあるようです。SqlConnection と MySqlConnection など。

理論的には、OBDC と OdbcConnection については知っていますが、サーバー上で常に ODBC 接続を作成する必要はありません。

ここで求めすぎですか?

4

4 に答える 4

5

NHibernate、LLBLGEN、MyGeneration、NetTiers、およびその他の ORM をご覧ください。

それらは、必要なある種の抽象化を可能にするかもしれません。一部は無料、一部は有料です。

私は個人的にNHibernateが好きです。

glengが言うようなインターフェースで上記を行うことができます:

public static IDbDataAdapter GetDataAdapter (Database db)
    {
        switch (db)
        {
            default:
            case "MsSql":
                return new SqlDataAdapter ();
            case "MySql"
                return new MySqlDataAdapter ();
        }
    }

    public static IDbCommand GetCommand (Database db)
    {
        switch (db)
        {
            default:
            case "MsSql":
                return new SqlCommand ();
            case "MySql"
                return new MySqlCommand ();
        }
    }
于 2013-11-13T20:40:36.823 に答える
2

はい。interfacesと を使用すると呼ばれDependency Injectionます。このようなものを設定するために見つけることができる多くの記事やチュートリアルがオンラインにあります.

アイデアは、に基づいて独自の実装を作成することinterfaceです。IoCコンテナで使用したいものを登録することで、コードを変更することなくこれらを交換できます。

于 2013-11-13T20:38:10.620 に答える