2011-01-30 7 views
3

現在、SQL Serverデータベースを使用してデータを格納するソフトウェアプロジェクトを作成しています。 SQL ServerからOracleに移行する計画がいくつか存在するため、要件の1つは、プラガブルデータベースレイヤを構築することです。プラグイン可能なデータベース層の提案

私の質問は、それを行うための最善の方法は何ですか?

答えて

1

あなたにはさまざまな選択肢があります。 1つの選択肢は、様々なオブジェクト・リレーショナル・マッパー(ORM)フレームワークのうちの1つと一緒に行くことです。 NHibernateは一般的なものですが、MicrosoftのEntity Framework(v4)は合理的な可能性もあり、興味のあるものならLinqとうまく統合されます。

2番目のオプションリポジトリパターンのようなものを実装し、リポジトリレイヤを介してすべてのデータベースアクセスを実行することです)。一部の人々は、ORMフレームワークをリポジトリパターンの代わりに見ます。他のものは、ORMフレームワークの上に値を追加するリポジトリ層を参照してください。リポジトリがあなたに与える本当の価値は、ORMレイヤーを交換できることです。それが合理的な可能性であるかどうかはあなただけが知っています。たとえそうであったとしても、新しいORMにすべてを再バインドするよりも、追加のリポジトリレベルを実装する方が多くなるかもしれません。

+0

私はあなたに完全に同意します。しかし、このソリューションでさえ、ビジネスロジックをストアドプロシージャに入れるという一般的な習慣には役立ちません... – aron

1

データレイヤにNHibernateを使用することをおすすめします。これを使用すると、必要なほぼすべてのデータベース・ドライバーで作業できるように、構成を簡単に交換することができます。

NHibernateは、MsSQLとOracleの両方を良好にサポートしています。

あなたはすべてのクエリを言語に依存しないHibernateクエリ言語(HQL)で書くことができます。別のオプションは、厳密に型指定されたデータアクセスを得るために、NHibernate 3のlinqプロバイダを使用することです。

他にも言及したように、リポジトリパターンを使用してUnit Unit of WorkまたはSessionFactoryを注入することもお勧めします。 Oracleは今や彼らのEntity Frameworkのプロバイダのベータ版をリリースしました:

編集http://thedatafarm.com/blog/data-access/oracle-entity-framework-beta-released-today/

1http://nhforge.org/Default.aspx## ##

+1

計画をOracleに移行する場合は、NHibernateを使用することをお勧めします。エンティティフレームワークは、オラクルの第三者サポートのみを持っており、うまく機能しません。 –

+0

@iCe私はあなたに完全に同意します。 – alexn

+0

プロバイダは無料でもありません。だから私はNHibernateが行く方法だと思います。 –

1

を見出し、私は、Entity Frameworkを使用して、かなりNHibernateはより簡単かつ非常に高速に成熟している示唆しています。 EFのOracleサポートでは、oracle providerが必要です。

エンティティフレームワークと並んで、リポジトリパターンなどのパターンを使用することをお勧めします。このようにして、依存性注入を使用して、選択した実装を変更することができます。アプリケーションは、データベースまたはORM自体から独立しています。もしあなたが望むなら、NHibernateを使うこともできます。

0

もしあなたがORMのやり方に行きたいのであれば、NHibernateをalexnの提案、あるいはTelerikのOpenAccess ORMとして使うことができます。 Oracleやその他のDBMS用のEFプロバイダもありますが、それらは無料ではありません。

DAL全体をゼロから作成したい場合は、リポジトリパターンを使用します。リポジトリ用のインタフェースを作成し、各データベースの各リポジトリプロバイダを作成します。 Hereさんのディスカッションについて。

関連する問題