от
У меня есть приложение .net core web api, где я использую ядро Entity Framework с сервисным уровнем, единицей работы и шаблоном репозитория Для DI я использую Autofac. Приложение имеет несколько клиентов, и у каждого клиента есть своя собственная база данных, и схема для всех этих баз данных одинакова. При каждом вызове API я получаю специфическую для клиента строку соединения, используя которую я должен создать DbContext и использовать его для всех своих операций. В классе запуска я зарегистрировал свой dbcontext ClientDbContext и все другие классы. Когда вызывается класс единицы работы, я создаю свой новый DbContext на основе строки подключения. Я хочу, чтобы хранилище использовало этот экземпляр, но хранилище все еще использует исходный экземпляр ClientDbContext, который был создан при запуске. Как я могу заставить репозиторий использовать новый экземпляр DbContext? Единица работы:
public class UnitOfWork : IUnitOfWork
{
    public ClientDbContext ClientDbContext { get; private set; }        

    public UnitOfWork ()
    {            

    }

    public void SetDbContext(string connectionString)
    {
        if(ClientDbContext == null)
        {
            //creating new db context instance here
            ClientDbContext = MembershipRepository.CreateDbContext(connectionString);
        }                
    }        
    //property injection
    public IGenericRepository SomeEntityGenericRepository;
}
Общий репозиторий:
public class GenericRepository : IGenericRepository where TEntity : class
where TDbContext : DbContext
{
    private readonly TDbContext _context;
    private readonly DbSet _dbset;
    public GenericRepository(TDbContext context)
    {
        // need to get updated context here, but getting the initial one
        _context = context;
        _dbset = _context.Set();
    }
}
Может кто-нибудь, пожалуйста, помогите мне, как выполнить вышеуказанное требование? Есть ли способ заставить Autofac использовать мой новый созданный объект dbcontext?              

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.
...