我试图弄清楚如何解决这个问题:
我有 3 个具有多对多关系的表。
Users *-* Roles *-* Permissions
我使用 ORM 从他们那里获取数据。
我的业务层的一个方法必须返回每个权限的用户,所以我用这个类返回对象:
public class UsersPerPermission
{
public User[] {get;set;}
public Permission {get;set;}
}
但是这个类没有映射到存储库中的任何表,它是我从现有表中生成的。这个班级应该住在哪里?
换句话说:
我应该有一个
IRepository.GetUsersPerPermission()
吗?然后该类应该存在于存储库中。或者我应该有一个
IBusinessLayer.GetUsersPerPermission()
?然后我必须调用存储库中的 CRUD 方法?
只将它放在业务层是有意义的,因为存储库应该只将 CRUD 操作暴露给表......但是,为了从业务层执行此操作,我必须执行几个独立的查询来获取数据并创建“UserPerPermission”类。另一方面,如果我将它放在存储库中,我可以使用分组一次性获取该信息。
谢谢!
PS:这个中间对象叫什么名字?“转变”?