0

Обычно DbContext и ConnectionString устанавливаются при запуске приложения. В моем приложении ASP.NET MVC у меня есть база данных с Пользователи и ConnectionStrings данные и в зависимости от того, какой пользователь входит в систему, я хочу использовать их ConnectionString для подключения их к вторичному DbContext.Срок службы DbContext, начинающийся после входа пользователя

Я попытался использовать DbContextScope, но с текущей реализацией он, похоже, не поддерживает этот сценарий. (Я разместил связанный с этим вопрос для этого here).

Итак, в жизненном цикле приложения ASP.NET MVC, как мы можем убедиться, что вторичный DbContext создается только после входа пользователя в систему? Каков правильный способ управления жизненным циклом DbContext здесь.

Спасибо!

ответ

1

Существует перегрузка для DbContext, которая принимает строку подключения. При этом вы можете добавить конструктор для передачи во вторичной строке подключения на основе пользователя, который обращается к данным.

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

В качестве альтернативы вы можете передать объект пользователя, который использует строку подключения.

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

Надеюсь, это поможет вам.

Обновление для Lifecycle

Что касается жизненного цикла, вы могли бы использовать что-то вроде этого с нулевым чеком от вызывающей стороны.

public static MySecondaryDbContext GetContextForUser(UserObject user) 
{ 
    if(user.IsLoggedIn) 
      return null; 

    return new MySecondaryDbContext(user.ConnectionString); 
} 

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

Это предотвратит вторичное DbContext от того экземпляра до пользователя после входа в систему.

+0

Мой вопрос заключается в основном о том, как управлять жизненным циклом DbContext в этом сценарии. Я уточню вопрос, чтобы сделать его более понятным. Спасибо за ответ в любом случае. – orad

+1

Я разместил для вас обновление, которое может помочь. –

Смежные вопросы