我有一个部门的表格,它有如下数据。
该表的设计如下
[ ID | User Name | Department | IsActive | ...]当我查询这个表时,我想从数据库返回的内容取决于当前登录的用户部门。
如果这个数据库设计不够,那么请给我一个好的设计建议。
到目前为止,我实施的是
var accountRepository = DataRepositoryFactory.GetDataRepository<IAccountRepository>();
  var accounts = accountRepository.Get() as List<UserManagement>;
  if (accounts != null)
   {
      if (AuthorizationAccount.Department == (SecurityConstants.RoleSuperAdministrator))
            return accounts.ToArray();
      else if (AuthorizationAccount.Department == (SecurityConstants.RoleAdministrator))
            return accounts.Where(r => !r.Department.Equals(SecurityConstants.RoleSuperAdministrator)).ToArray();
      else if (AuthorizationAccount.Department != (SecurityConstants.RoleAdministrator)
            || AuthorizationAccount.Department != (SecurityConstants.RoleSuperAdministrator))
            return accounts.Where(r => !r.Department.Equals(SecurityConstants.RoleSuperAdministrator))
                .Where(r => !r.Department.Equals(SecurityConstants.RoleAdministrator)).ToArray();
                }
  return null;我不喜欢有这么多的IF条件,如果需求改变了,或者规则变得更加复杂,这将是维护的噩梦。
用较少的硬编码更好地实现这种行为的好的设计建议是什么?
是否有任何设计模式来回答这种类型的问题?
发布于 2014-02-16 12:26:01
你有两个选择:
https://stackoverflow.com/questions/21809378
复制相似问题