2012-03-09 11 views
0

私はいくつかのアドバイスが必要です:データアクセスロジック層だけがnHibernate DLLを参照するように、プレゼンテーション層とビジネスロジック層のnHibernate依存関係を切り離したいと思います。C#nhibernate mulitier architecture

私は、SessionHelper/SessionManagerオブジェクトを使用するソリューションと、作成されたすべてが最上位レイヤで使用されるソリューションのみを表示します。私はより良い解決策が存在しなければならないと思う。

私はどんなデザインパターンに従うべきですか? リポジトリパターンでセッション(マネージャ、ヘルパーなど)をカプセル化し、ビジネスロジックレイヤで強制的にORMを変更することはできますか?

コードサンプルをいただければ幸いです。前もって感謝します。

+1

"簡単にORMを変更しますか?"使用したいと思うすべてのORMSの間で、最小公約数を使用することしかできませんでした。あなたはそれを強化するための多くの機能を使用することはできませんし、漏れ抽象化を持つので、パフォーマンスの問題に苦しむでしょう。 – Firo

+1

この質問は多く出てくるし、一般的な答えは:それをしないでください。 ORMをスワップアウトできることは、重要なトレードオフを必要とする価値があるケースはごくわずかです。 ORMを完全に中和することなくORMを「隠す」ことは困難です。 –

+0

こんにちは@MichaelMaddox:理論上、私はクライアントがそのような投資をしないので、ORMを切り替えたくありません。私の目標は、(私のすべてのプロジェクトに適用する)ベースクラス/ジェネリッククラスを実装でき、私が見たくないもの(つまりORMへの依存関係)を隠すことができるようにすることです。 nhibernateセッション、EF objectcontextなどをカプセル化したいと思います。どのようにそのようなクラスを実装しますか? – Joao

答えて