0

考虑到 abp 的概念,这不是问题,而是关于什么是更好的方法的问题或建议。在我的例子中,有不同类型的角色与一些核心实体交互。说吧。

实体:

MedicalClaim : FullAuditedEntity

PharmacyClaim : FullAuditedEntity

票证:FullAuditedEntity

角色:

行政

经理

审计师

保险公司

专业记账员

药剂师

医院账单

医师(用户)

与已定义实体的真正交互是角色到角色,例如。MedicalClaim 由 ProfessionalBiller 或 Physician 向保险公司收取费用。用户属于公司或个人医生。Manager、Admin 和 Auditor 是上一级用户。

多点 = 真 如果使用多租户方法,我如何区分 ABP 中不同类型的租户,因为每个租户都不是同一种客户,我需要租户之间的交互。在这种情况下,Admin、Manager 和 Auditor 将是 HOST 用户,因此他们可以管理租户和与租户相关的实体(医疗索赔和票据)。如何设置自动过滤以便每个租户都可以看到“自己的”实体,如果 PharmacyBiller 向 Insurer 开具账单,则应该在两种情况下都进行过滤,首先是 PharmacyBiller (FROM) 用户进入系统时,以及 Insurer (TO) 进入系统时。使用多租户我们可以获得所有好处(功能、版本),因此例如不需要为每个角色复制权限。前任。PharmacyBiller (CAN_CREATE_CLAIM) 和 ProfessionalBiller (CAN_CREATE_CLAIM) 并通过功能区分什么样的角色 ("

MULTITENACY = FALSE 如果我们不使用多租户,我们就会失去与多租户相关的所有概念,并且会出现大量重复代码,但也许我们可以通过定制开发获得更大的灵活性。这里的替代方法是使用 OrganizationUnit、OrganizationUnitRole 和权限,并将每个角色视为一个 OrganizationUnit 以进行过滤。在这里,每次我们在内部创建 Role 的任何实例时,我们都需要创建一个 OrganizationUnit,以便 EntityId 的源可以是唯一的,以避免每个角色使用大量 null 污染 User 实体。

我认为这是这里在 aspnetboilerplate/zero 上提到的一个非常常见的场景,欢迎社区或支持团队提供一些提示(即使有意义,也要知道某些解决方案的缺点)

4

1 回答 1

0

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 ();

我建议使用多租户

于 2021-04-14T21:16:53.420 回答