クライアントが、データアクセスコードを実装して、実行時構成設定に基づいてOracleまたはSQLサーバーデータベースを使用する必要がある状況があります。本番環境ではOracleを使用しますが、開発者とQAの両方がSQL Serverインスタンスに対して実行されています。LINQとXYZの多型?
(私はこれ以上の任意のコントロールを持っているか、これは、Oracle以外の場合は、自分のBIプラットフォームとDEVは、SQL Serverで動作するように望んでいるある理由上の任意のバックグラウンドを持っていません。)
彼らの要求を使用することですすべてのデータアクセスに対して、LINQ-to-SQL/LINQ-to-Oracle彼らはアプリケーションをサポートする必要があり、まだEFに飛びつく知識はありませんが(私たちがEFを使用する場合、同じ問題が存在するとは思いますが)
両方のデータベースにLINQ to XYZクラスを実装することができますが、両方に接続できるので、共通インターフェイス(DataContext以外)を共有しないため、実際にインターフェイスに対してコードを作成したり、実行時の実装。
どのように私はこれにアプローチする必要がありますか?
UPDATE この記事を書いた後、私は少しEFに調査しなかったし、私がEF使用する場合は、この同じ問題が存在しているように私には見える - 私の長期的な目標になります。
MEFを使用しても、コーディングする共通のインタフェース/契約はありません。具体的なDALをアプリケーションに挿入する方法はたくさんありますが、MEFを含めてすべて、具体的な実装を知らなくてもアプリケーションをコーディングできるように共通の契約が必要です。私が知る限り、LINQ-to-SQLクラスを生成し、LINQ-to-Oracleクラスのセットを生成すると、共有コントラクト(インターフェイス、ベースクラスなど)はありません。実装とは何の関係もないので、良いことです。 – SonOfPirate
一般的なデータアクセスフレームワークhttp://www.deitel.com/ResourceCenters/Programming/ADONET/ADONETDataAccessLayer/tabid/3176/Default.aspx –
これは大きく後退したようです。私は、ADO.NETと、実際のプロバイダとは独立したコード化を可能にする抽象ファクトリパターンの実装に精通しています。しかし、現実にはこれまでのところしかない。私たちのSQLテキストで説明されなければならないプラットフォーム間の構文の違いがしばしばあります。これは、さまざまな構文要件に対応するために、ある時点で異なるコードを持つことを意味します。 – SonOfPirate