Nhibernate +リポジトリパターンを使用するために推奨されるアプローチは何ですか?NHibernateとリポジトリパターン
私はどのような道を取るべきかわからないほど多くの異なる記事や意見があります。例えば、Take this lengthy articleである。これはQueryオブジェクトの例を示していますが、各具体的なリポジトリはそのコンストラクタにISession
を受け入れます。私のBL(ビジネス層)のNHセッションはどうしたらいいですか?
それらのそれぞれは、特定のメソッドの束を持つ、リポジトリの束を作成しますか?
BLは現在NHibernate(Repository is the new Singleton)を認識することが許可されているので、それはあまりにも多くの作業ですか?単一の一般的なリポジトリを作成しますが、
IQueriable<T>
を公開し、毎日のようにBLに
をLINQを使用して、LINQツーNHibernateのが処理することができなくなり、クエリがある(または私は微調整する必要があります100回のクエリで手動でSQLを実行します)。カスタムリポジトリメソッドでは簡単ですが、LINQに依存するコードでは不可能です。場合によってはLINQが壊れているという理由だけで両方を使用するのはナンセンスです。クエリオブジェクト?
QueryOver
もNH固有であり、これはBLが再びDAL実装を認識していることを意味します。さらに別のアプローチですか?明らかに
、私はどこか、多分作業単位パッテンを使用して(その周りの多くの異なる実装もありますが)取引を管理できるようにする必要があります。
DDDのようにリポジトリについて話していますか? – mathieu
@マチュー:はい。しかし、もっと一般的には、私は2011年に書かれたアプリを整理するための推奨された方法を模索しています。私は前にNHibernateをいくつかの方法で使用してきましたが、BLのNH特異クラスを参照する必要があるときは嫌です。 NHは抽象化を必要としないと言うのが一般的になってきているようです。 – doe
@doe - あなたのNH固有のクラスは、単にあなたのドメインエンティティですか?それ以外の場合は、かなりの量のプロパティの重複とマッピングがあります。 –