asp.net mvc - DbContext 生存期从用户登录后开始



通常DbContext和ConnectionString在应用程序启动时设置。在我的 ASP.NET MVC应用程序中,我有一个包含用户和ConnectionString数据的数据库,根据登录的用户,我想使用他们的ConnectionString将它们连接到辅助DbContext。

我尝试使用 DbContextScope,但在当前的实现中,它似乎不支持这种情况。(我在这里发布了一个相关问题)。

因此,在 ASP.NET MVC 应用程序的生命周期中,我们如何确保仅在用户登录后实例化辅助 DbContext?在这里,管理 DbContext 生命周期的正确方法是什么?

谢谢!

DbContext 存在一个重载,它接收连接字符串。这样,您可以添加一个构造函数,以根据访问数据的用户传入辅助连接字符串。

public MySecondaryDbContext(string connectionString)
        : base(connectionString)
    {
    }

或者,可以传入具有要使用的连接字符串的用户对象。

public MySecondaryDbContext(UserObject user)
        : base(user.ConnectionString)
    {
    }

希望这对您有所帮助。

生命周期更新

至于生命周期,您可以使用这样的东西和调用方的空检查。

public static MySecondaryDbContext GetContextForUser(UserObject user)
{
     if(user.IsLoggedIn)
          return null;
     return new MySecondaryDbContext(user.ConnectionString);
}
private MySecondaryDbContext(string connectionString)
        : base(connectionString)
{
}

这将防止在用户登录之前实例化辅助 DbContext。

最新更新