我正在将应用程序从单租户移动到多租户。在此过程中,我将tenantId 添加到所有必需的模型并更新了数据库(实体框架5)。
但是,我有所有需要更新的存储库。首先,我不知道如何在模型项目中获取当前用户id(然后是tenantId)(不依赖WebSecurity,没有httpContext)。
其次,我不想在我的所有控制器中都编写这种丑陋/昂贵的代码。(获取 UserId,进行数据库调用以获取tenantId,然后将其传递给存储库。)
public class PinTypeController : BaseController
{
private PinTypeRepository pinTypeRepo;
public PinTypeController()
{
UserRepository userRepo = new UserRepository();
UserProfile user = userRepo.GetById(WebSecurity.CurrentUserId);
this.pinTypeRepo = new PinTypeRepository(user.TenantId);
}
public ActionResult Index()
{
vmPinType vm = new vmPinType();
vm.NewPinType = new PinType();
vm.PinTypes = pinTypeRepo.GetAll();
return View(vm);
}
}
有没有更好的方法来存储tenantId,以便我可以从模型项目和我的所有存储库中访问它?