Entity framework core 所有租户之间的ABP.IO GetAsync
ABP为实现IMultitTenant接口的实体添加了一个额外的租户过滤器。 因此,当我们使用标准存储库时,将应用过滤器:Entity framework core 所有租户之间的ABP.IO GetAsync,entity-framework-core,abp,Entity Framework Core,Abp,ABP为实现IMultitTenant接口的实体添加了一个额外的租户过滤器。 因此,当我们使用标准存储库时,将应用过滤器: public class OrderService : ApplicationService, IOrderService, ITransientDependency { public IReadOnlyRepository<Order, Guid> _repository { get; set; } public async Task<
public class OrderService : ApplicationService, IOrderService, ITransientDependency
{
public IReadOnlyRepository<Order, Guid> _repository { get; set; }
public async Task<OrderDto> GetAsync(Guid id)
{
Order order = await _repository.FindAsync(id); //Is it possible to search among all tenants?
return ObjectMapper.Map<Order, OrderDto>(order);
}
}
如果我们以某种方式传递“@_ef_filter__p_0”参数,那么它将在所有租户中进行搜索。
非常感谢您的帮助。您就是这样做的
公共类OrderService:ApplicationService、IOrderService、ITransientDependency
{
公共IDataFilter数据筛选器{get;set;}
公共IReadOnlyRepository存储库{get;set;}
公共异步任务GetAsync(Guid id)
{
//临时禁用IMultiTranent筛选器
使用(DataFilter.Disable())
{
Order=await Repository.FindAsync(id);
返回ObjectMapper.Map(订单);
}
}
}
SELECT TOP(2) *
FROM [AbpOrders] AS [a]
WHERE (@__ef_filter__p_0 = CAST(1 AS bit) OR [a].[TenantId] IS NULL) AND ([a].Id = @__Id_0)
public class OrderService : ApplicationService, IOrderService, ITransientDependency
{
public IDataFilter DataFilter { get; set; }
public IReadOnlyRepository<Order, Guid> Repository { get; set; }
public async Task<OrderDto> GetAsync(Guid id)
{
//Temporary disable the IMultiTenant filter
using (DataFilter.Disable<Volo.Abp.MultiTenancy.IMultiTenant>())
{
Order order = await Repository.FindAsync(id);
return ObjectMapper.Map<Order, OrderDto>(order);
}
}
}