Base solution for your next web application
Open Closed

How fetch data from tenant's dataBase in login #1459


User avatar
0
omital created

Hi, I set application to use different db for each tenant. How I can read data from tenant's db that requested login, in Login action?

public async Task<JsonResult> Login(LoginViewModel loginModel, string returnUrl = "", string returnUrlHash = "")
        {
            CheckModelState();

            var loginResult = await GetLoginResultAsync(
                loginModel.UsernameOrEmailAddress,
                loginModel.Password,
                loginModel.TenancyName
                );

            

            await SignInAsync(loginResult.User, loginResult.Identity, loginModel.RememberMe);
            
            if (string.IsNullOrWhiteSpace(returnUrl))
            {
                returnUrl = Request.ApplicationPath;
            }

            if (!string.IsNullOrWhiteSpace(returnUrlHash))
            {
                returnUrl = returnUrl + returnUrlHash;
            }

            var book = _bookRepo.GetAll().SingleOrDefault();

            return Json(new MvcAjaxResponse { TargetUrl = returnUrl });
        }

In above code I want read Book item from tenant's db that request to login


2 Answer(s)
  • User Avatar
    0
    ismcagdas created
    Support Team

    Hi,

    First you need to find tenantId with given tenancyName from host database. Then you can switch to tenant context like this.

    using (CurrentUnitOfWork.SetTenantId(tenantId))
    {
        ......
    }
    

    Database operations between using statement will run on tenant database with id: tenantId. Of course, you can switch agian to another tenant or host context in using statement.

  • User Avatar
    0
    omital created

    Thank you man. I think, access to unitOfWork in accountController is not available?! :lol: