【发布时间】:2016-10-21 21:44:30
【问题描述】:
我正在尝试在我的 MVC 程序设计中使用存储库,但遇到了如何最好地构建它们的问题。
例如,假设我有一个对象 USers,我有一个 UserRepository,它具有 getUser(int id)、saveUser(Dal.User model) 等功能......
所以如果在我的控制器中我有 EditUser 并且我想显示一个具有用户详细信息输入表单的视图。所以我可以这样做:
User user = _userRepository.getUserDetails(userId);
好处是我的控制器只处理 HTTP 请求,业务逻辑被移动到存储库,使测试等更容易
所以,假设我想显示此用户在我的系统中可能拥有的角色的下拉列表,即客户、管理员、员工等
是否可以在 _userRepository 中有一个名为 getPossibleUserRoles() 的函数,或者我应该有一个单独的 _roleRepository 和一个函数 getRoles() ?
为您遇到的每个实体注入一个存储库到您的控制器中是不是一个坏主意?或者在你的存储库中混合实体是一个坏主意,使它们变得杂乱无章。
我意识到我已经提出了一个非常简单的场景,但显然随着系统变得越来越复杂,您可能会谈到需要在控制器中为每个页面调用实例化 10 多个存储库。并且还可能实例化当前控制器方法中未使用的存储库,以使它们可用于其他控制器方法。
任何关于如何最好地使用存储库来构建项目的建议表示赞赏
【问题讨论】:
标签: oop design-patterns repository-pattern