Мое приложение - ASP.NET Core 1.0 Web API. Я использую Entity framework.
Я не могу изменить CommandTimeout следующим образом:
public class MyDbContext: DbContext
{
   private const int Timeout = 180;
   public MyDbContext(DbContextOptions options): base(options)
   {
       this.Database.SetCommandTimeout(Timeout);
   }
}
это работает, если Timeout определен в моем классе.
Однако, я хотел бы иметь значение моего Timeout внутри моего файла appsettings.json следующим образом:
  "DbContextSettings": {
    "Timeout": "180"
  }
 поэтому есть два способа установить CommandTimeout сейчас:
-  Передайте 
CommandTimeOutInSecondsв качестве параметра конструктору. -  Получить значение из 
appsettings.jsonвнутри конструктора моего класса 
Я не знаю, как достичь одного из способов.
Возможно ли это? или существует ли какое-либо известное обходное решение?
Edit
Я никогда не инициализирую MyDbContext. Я делаю это в ConfigureServices в классе Startup следующим образом:
services.AddDbContext<MyDbContext>(db => db.UseSqlServer("secret"));
Изменить 2
@dennisanberlin, так что скажем, у меня есть контроллер, вызывающий следующий метод:
public class SomeRepository
{
  private MyDbContext context;
  public SomeRepository(MyDbContext myContext)
  {
     this.context = myContext;
  }
  public Person SomeMethodCalledByController(){
     return myContext.SomeTableWhichContainsPersons.FirstOrDefault(person => person.name == "Bob");
  }
}
Класс SomeRepository никогда не инициализируется мной. Я делаю это через dependency injection в Startup следующим образом:
services.AddTransient<SomeRepository>();
Класс знает о MyDbContext из приведенной выше строки:
services.AddDbContext<MyDbContext>(db => db.UseSqlServer("secret"));
Поэтому я никогда не передаю объект MyDbContext напрямую ни одному из моих классов, работающих с базой данных.