DAOデータアクセスオブジェクトは.NETでよく使用されるパターンですか?私はデータレイヤーへのアクセスを提供する手段として常にDAOを使用してきました。たとえば、IObjectSetとしてすべてのObjectSetsを公開しているEntityFramework ObjectContextに対して、シン・インタフェースを使用している可能性があります。.NETでDAOパターンが広く使用されていますか?
複雑なクエリは、それぞれがこのインターフェイスに依存するDAOによって公開されます。私はGetProductsOnSale()
またはGetInfrequenlySoldProducts()
のようなメソッドを公開するProductDAOを持っているかもしれません。私のコントローラやプレゼンターは、これらのメソッドを使用します。これは、単体テストの特定の結果をスタブすることを可能にするためにはおそらくバーチャルになります。
これは.NETでよく使用されるイディオムですか?なんらかの理由で、私がこのパターンを使ってオンラインで見る例の圧倒的多数は、Javaに基づいています。 DAOのベストプラクティスでさえもthis questionにはC#ではなくJavaとしてタグが付けられます。別のコミュニティから何かを使うことには何も問題はありません
、私はちょうど私の周りに誰もが違ったことをやっているというわずかな恐怖を持っている...
私の理解では、リポジトリはすべてのIObjectSetメンバを公開する「もの」であり、DAOはリポジトリを使ってクエリを構築するクラスです。それはあなたがそれらの用語の使い方と一貫していますか? –
@Adam - 実際には 'DAO'は実際のDBインターフェースとは何ですか、'リポジトリ 'は' DAO'の使用を抽象化して "メモリ内"コレクションを表現するものです。 – Oded
私は参照してください。リポジトリのインスタンスを取得し、複雑なクエリを公開するオブジェクトは何と呼びますか?確かにあなたのリポジトリにおそらく数多くのすべての質問を投げ捨てるのは良い考えではありません...私は物事がかなり素早く複雑になっていると想像します –