MVCアプリを「アップグレード」しています。以前は、DALは、標準のLINQ to SQLクエリを使用する一連のリポジトリ(エンティティ名に基づく)として、モデルの一部でした。現在、これは別のプロジェクトであり、PLINQOを使用して生成されます。
PLINQOはエンティティのプロパティに基づいてクエリ拡張機能を生成するため、コントローラーで直接使用し始めました...そしてリポジトリをすべて削除しました。
正常に動作しています。これはあなたの経験に基づいた質問です。このパスを続行する必要がありますか、それともリポジトリを再構築する必要がありますか(リポジトリファイル内のDALとしてPLINQOを使用)?
PLINQOで生成されたデータコンテキストを使用する利点の1つは、DBアクセスが必要な場合に、データコンテキストへの参照を1つだけ作成することです。リポジトリパターンでは、データアクセスが必要なときに各リポジトリを参照する必要があり、単一のコントローラー上の複数のリポジトリを参照する必要がある場合もありました。
私がリポジトリで見た大きな利点は、適切な名前のクエリメソッド(つまり、FindAllProductsByCategoryId(int id)など)でした。PLINQOコードでは、それは_db.Product.ByCatId(int id)です-これも悪くはありません。
私は両方が好きですが、それが「ハリアー」になるのは、クエリが述語を使用する場合です。それをリポジトリクエリメソッドにロールアップできます。ただし、PLINQOコードでは、_db.Product.Where(x => x.CatId == 1 && x.OrderId == 1);のようになります。コントローラーにそのようなコードを含めるのが好きかどうかはわかりません。
これについてどう思いますか?