この問題に対処する方法を見つけようとしています:
多対多の関係を持つ 3 つのテーブルがあります。
Users *-* Roles *-* Permissions
ORM を使用してそれらからデータを取得します。
私のビジネス レイヤーのメソッドは、パーミッションごとにユーザーを返す必要があるため、次のクラスのオブジェクトを返します。
public class UsersPerPermission
{
public User[] {get;set;}
public Permission {get;set;}
}
ただし、このクラスはリポジトリ内のどのテーブルにもマップされません。既存のテーブルから生成したものです。このクラスはどこに住むべきですか?
言い換えると:
私は持っているべき
IRepository.GetUsersPerPermission()
ですか?そして、そのクラスはリポジトリに存在する必要があります。それとも持っているべき
IBusinessLayer.GetUsersPerPermission()
ですか?そして、リポジトリで CRUD メソッドを呼び出す必要がありますか?
リポジトリはCRUD操作をテーブルに公開するだけなので、ビジネスレイヤーにのみ配置することは理にかなっています...しかし、ビジネスレイヤーからこの操作を実行するには、データを取得するためにいくつかの独立したクエリを実行する必要があります「UserPerPermission」クラスを作成します。逆にリポジトリに入れておけば、グルーピングを使えば一発で情報を取得できます。
ありがとう!
PS: この中間オブジェクトの名前は? 「変換」?