У меня есть случай, когда у каждого клиента есть своя собственная БД - я хотел бы, чтобы это происходило автоматически, например, когда Autofac создает контроллер, он ищет clientId, а затем получает строку подключения
Следующее получает строку
public class ModuleContextProvider : IModuleContextProvider
{
IModuleContext context;
public IModuleContext GetContext(int moduleId)
{
if ( context == null)
{
//get module.
var rep = DependencyResolver.Current.GetService<IModuleRepository>();
var module = rep.GetById(moduleId);
context = GetContext(module);
}
return context;
}
public IModuleContext GetContext(Model.Module module)
{
if ( context == null)
{
//get module.
var rep = DependencyResolver.Current.GetService<IModuleRepository>();
context = new ModuleContext(module.DBConnection);
if ( context == null)
throw new InvalidOperationException("Could nto create DB COntext" );
}
return context;
}
}
, но как мне получить ее в контроллерах, чтобы каждый не беспокоился об этом каждый раз, у меня есть следующее, но, очевидно, для создания хранилища мне нужен контекст.
public CategoryController(ICommandBus commandBus, ICategoryRepository categoryRepository)
{
this.commandBus = commandBus;
this.categoryRepository = categoryRepository;
}
Можно ли использовать ROute, например, // Controller / ModuleId / Method, а затем каким-то образом получить это из URL?
Заранее спасибо за любую помощь.
Редактировать: реальная проблема здесь, я думаю, в том, как продолжать толкать строку соединения (в данном случае в форме модуля).