Вы можете зарегистрировать свой сервис внутри ConfigureServices
в Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddSingleton<DataAccessFactory>();
}
и добавить его туда, где вам нужно:
public class MyController
{
public readonly DataAccessFactory Factory;
public MyController(DataAccessFactory factory)
{
Factory = factory;
}
}
Он будет создан только один раз для каждого приложенияжизнь.Если вместо этого вы захотите изменить область действия, например, для каждого запроса, просто измените AddSingleton
на AddScoped
.
Обновление:
Но будьте осторожны при смешивании разныхуслуги.Вы не можете ввести короткоживущий объект в долгоживущий, потому что это вызовет исключения.В вашей ситуации вам нужно изменить область видимости DbContext на singleton (sic) или рассмотреть возможность изменения времени жизни Factory на Scoped. Здесь - пример того, как изменить область видимости DbContext.