首页 > 解决方案 > 程序运行期间的 ASP.NET Switch 数据库

问题描述

我有 2 个 Mongo 数据库。我想在 UserRole 为“Admin1”时切换到 Database1,当 UserRole 为“Admin2”时切换到 Database2。这可能吗?

private CreatorDBClient()
{
    _client = new MongoClient();
   
//Here i would like to have something like
//IF User.IsInRole("Admin1")  then  _databaseName = "NextProduction1";
//ELSE                              _databaseName = "NextProduction2"

    _defaultCompanyCollection = "Companies";
    _database = _client.GetDatabase(_databaseName);     
    _companyCollection = _database.GetCollection<CompanyModel>(_defaultCompanyCollection);
}

public static CreatorDBClient GetInstance()
{
    if (_instance == null)
    {
        _instance = new CreatorDBClient();
    }
    return _instance;
}

标签: c#asp.netmongodb

解决方案


创建跟随类。

public class HttpContextValues
{
    private IHttpContextAccessor _httpContextAccessor;
    public HttpContext HttpContext { get; set; }
    public HttpContextValues()
    {
        _httpContextAccessor = new HttpContextAccessor();
        HttpContext = _httpContextAccessor.HttpContext;
    }

    public class HttpContextValues
   {
    private IHttpContextAccessor _httpContextAccessor;
    public HttpContext HttpContext { get; set; }
    public HttpContextValues()
    {
        _httpContextAccessor = new HttpContextAccessor();
        HttpContext = _httpContextAccessor.HttpContext;
    }


    public IEnumerable<dynamic> UserRoles()
    {
        if (HttpContext.User.Claims.Count() > 0)
        {
            var result = HttpContext.User.Claims.Where(c => c.Type == 
            ClaimTypes.Role).ToList();
            return result;
        }
        else
        {
            return null;
        }

    }
}
}

用法

HttpContextValues _httpContextValues = new HttpContextValues();
__httpContextValues.UserRoles();
    

推荐阅读