Вы можете использовать шаблон фабрики для получения нужного контекста БД, задав указанный параметр:
public class DbContextFactory {
private readonly TodoContext todoContext;
private readonly OtherContext otherContext;
// Uses dependency injection
public DbContextFactory(TodoContext todoContext, OtherContext otherContext) {
this.todoContext = todoContext;
this.otherContext = otherContext;
}
// maybe its better to use a custom Repository Interface here as return type that has a "FetchAll" method
public DBContext Get(string parameter) {
switch(parameter) {
case "todo":
return this.todoContext;
break;
...
}
}
}
Я рекомендую использовать эту фабрику в качестве единичного экземпляра, предпочтительно с использованием внедрения зависимостей ASP.net(зарегистрируйтесь как сервис)
[Route("table/{tableName}")]
public IEnumerable<object> GetTableByName(string tableName) {
return this.dbContextFactory.Get(tableName).FetchAll();
}
Имейте в виду, что последний код - только псевдокод.Убедитесь, что вы разрешаете доступ к этой конечной точке только тем пользователям, которые имеют правильные права доступа, и разрешают доступ только к тем таблицам, к которым у пользователя есть доступ.