使用aspnetboilerplate v3.6
应用程序具有仅由主机管理(CRUD)的实体Book
。但是,租户应具有对此实体的只读访问权限。
例如,租户用户应该能够看到可用的书籍列表。目标是让租户用户选择他们喜欢的书籍列表,但这些书籍只能由主持人创建。
答案 0 :(得分:1)
public class Book: Entity, IMayHaveTenant
{
public int? TenantId { get; set; }
public string BookName { get; set; }
}
IMayHaveTenant接口定义了TenantId,但它可以为空。 空值表示这是一个主机实体,非空值表示该实体由租户拥有,其中Id是TenantId。 ASP.NET Boilerplate默认使用IAbpSession获取当前的TenantId。 IMayHaveTenant过滤器不像IMustHaveTenant那样常见,但您可能需要它来用于主机和租户使用的常见权利类型。
如果您想从租户页面获取所有图书。
using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.MayHaveTenant))
{
var allBooks = _bookRepository.GetAllList();
}
或者您可以抛出IMayHaveTenant并尝试
public class Book: Entity
{
public string BookName { get; set; }
}
答案 1 :(得分:0)
要添加到Alpers的答案中......
如果您使用[RequiresFeature]
AppService属性在功能背后具有特定实体。如果要在宿主站点中管理该实体,请确保已将主模块配置为IgnoreFeatureCheckForHostUsers
。 ;)
Configuration.MultiTenancy.IgnoreFeatureCheckForHostUsers = true;
Source: Ignore the RequiresFeature for host user
这咬了我一个...