-3

With asp.net-core service injection如何添加multi-tenant unitofwork(包含多個存儲庫)?c#netcore 1.1 unitofwork multitenant

在我的代碼現在,我有一個SetTenantId功能,在每個存儲庫更新tenantId

public class ContinentsController : Controller, ICustomApiController<Continent> 
{ 
    private readonly IUnitOfWork _data; 

    public ContinentsController(IUnitOfWork unitOfWork) 
    { 
     _data = unitOfWork; 
     _data.SetTenantId(currentUserTenantId); 
    } 
} 

public interface IUnitOfWork : IDisposable 
{ 
    ITicketRepository Tickets { get; } 
    int Save(); 
    void SetTenantId(int tenantId); 
} 

有沒有其他的解決辦法?

+0

只要使用谷歌...所有你需要的是閱讀的測試: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection –

回答

0

您可以創建一個服務層,該服務層將從您的控制器中調用,以便對數據執行任何CRUD操作。在這種情況下,您將傳遞沒有提供給服務方法的租戶標識符。

服務方法將傳遞租戶標識符2工作單元或存儲庫。在倉庫中,您可以擁有類似已有的方法,這些方法將爲選擇查詢返回IQueryable,以便爲租戶標識符進行篩選。

例如:獲取每個租戶標識符的單個數據記錄。

context.AutoTenantFilter(). FirstorDefault();

對於搜索方法的實現看起來像下面 context.AutoTenantFilter(). Where(x=>x.id==condition.value);

這個模型能夠通過嘲諷