问题描述
这不是问题,而是关于考虑到 abp 概念的更好方法的问题或建议。就我而言,有不同类型的角色与一些核心实体交互。说吧。
实体:
医疗索赔:FullAuditedEntity
药房索赔:FullAuditedEntity
票证:FullAuditedEntity
角色:
经理
审核员
保险公司
专业记账员
药房账单
医院账单
医师(用户)
与定义实体的真正交互是角色到角色,例如。 MedicalClaim 由 ProfessionalBiller 或医师向保险公司收费。用户属于公司或个人医生。经理、管理员和审核员是上一级用户。
MULTITENANCY = TRUE 如果使用多租户方法,我如何区分 ABP 中不同类型的租户,因为每个租户都不是同一种客户,我需要租户之间的交互。在这种情况下,Admin、Manager 和 Auditor 将是 HOST 用户,因此他们可以管理租户和与租户相关的实体(医疗索赔和票证)。如何设置自动过滤以便每个租户都可以看到“自己的”实体,如果 PharmacyBiller 向保险公司收费,则应在两种情况下进行过滤,首先是在 PharmacyBiller (FROM) 用户进入系统时,以及在保险公司 (TO) 进入系统时。使用多租户我们可以获得所有好处(功能、版本),因此例如不需要为每个角色复制权限。前任。 PharmacyBiller (CAN_CREATE_CLaim) 和 ProfessionalBiller (CAN_CREATE_CLaim) 并通过特征 ("PHARMACY_CLaim") 和 ("PROFESSIONAL_CLaim") 区分什么样的角色
多重=假 如果我们不使用多租户,我们将失去与多租户相关的所有概念,并且会出现大量重复代码,但也许我们可以通过自定义开发获得更大的灵活性。此处的替代方法是使用 OrganizationUnit、OrganizationUnitRole 和权限,并将每个角色视为一个 OrganizationUnit 以进行过滤。在这里,每次我们在内部创建 Role 的任何实例时,我们都需要创建一个 OrganizationUnit,以便 EntityId 的来源可以是唯一的,以避免每个角色的大量 null 污染 User 实体。
我认为这是在 aspnetboilerplate/zero 上提到的一个非常常见的场景,欢迎社区或支持团队提供一些提示(即使有道理也知道某些解决方案的缺点)
解决方法
aspnet 样板默认具有多租户过滤,如果您想禁用它,您可以使用 https://aspnetboilerplate.com/Pages/Documents/Data-Filters,或查看有关框架的更多详细信息 https://aspnetboilerplate.com/Pages/Documents/Multi-Tenancy?searchKey=multi-tenancy%20asp.net%20boilerplate
var people1 = _personRepository.GetAllList ();
using (_unitOfWorkManager.Current.DisableFilter (AbpDataFilters.FILTER_NAME_HERE))
{
var people2 = _personRepository.GetAllList ();
}
var people3 = _personRepository.GetAllList ();
我建议使用多租户