c# - 在哪里放置两个相关对象的业务逻辑?

标签 c# architecture business-logic business-logic-layer

假设我有两个实体:UserUserGroup
它们具有一对多关系=> 每个UserGroup 实际上包含0 到n 个用户。

如果我想检索 UserGroup 的用户,在我的业务层中哪个类是放置该方法的更好的类?

  1. UserManager中,添加方法:GetAllUsersForUserGroup
  2. UserGroupManager中添加上述方法。

猜测 2 更好。但我不确定。
谢谢。

更新
我想我无法完全解释我的意思。
是的,我们可以有 UserUsersGroupGroups 等。

但我并不是要找出可以应用哪些不同的模式等来实现业务。我的问题是:您是将 GetAllUsersForUserGroup(int UserGroupID) 放在 UserManager 还是 GroupManager 中?您认为 GetAllUsersForUserGroup(int UserGroupID) 应该定义在管理用户的类中还是管理用户组的类中?

最佳答案

当然,如果不确切了解管理者和管理者的客户是如何构建的,以及他们已经提供了哪些方法,就很难给出意见。

假设管理器是简单的 DAO,具有用于基本实体操作的 CRUD 操作,我会考虑拥有更高级别的 UserRepository 或 UserService 对象,以提供更多类似“业务”的功能,例如

IList<User> FindUsersByGroup( UserGroup group );

不过总而言之,从逻辑上讲,没有正确的答案,您可以争论任何一种方式 - 我的决定基于使管理器尽可能简单,避免对象膨胀,密切关注您如何看待应用程序在在不久的将来并在必要时重构它的可维护性成为一个问题。

关于c# - 在哪里放置两个相关对象的业务逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6275557/

相关文章:

c# - 无法将 Nullable<Int64> 分配给 Linq.Table.Max()?

ios - 为创建动态数据库的 iOS 应用程序设计 Core Data 托管对象模型

laravel-5 - 为我的网站开发概念模型时遇到的问题

c# - 可视化 C# 方法逻辑

c# - 如何获得枚举自定义值?

c# - 如何使用 Linq 将制表符分隔文件读入多维数组?

c# - 在 LINQ 中按月和年对多个日期属性进行分组

javascript - 如何根据参数以更高效更好的方式分析数据库表中的字符串?

python - 什么是胶水语言?

c# - 有没有更好的方法来编写业务逻辑来验证互斥代码?