Вы можете создать свой экземпляр DbContext
следующим образом:
var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json");
var configuration = builder.Build();
var optionsBuilder = new DbContextOptionsBuilder<RetContext>();
optionsBuilder.UseSqlServer(configuration.GetConnection("DefaultConnection"));
_context = new RetContext(optionsBuilder.Options);
Однако идеальным вариантом является использование внедрения зависимостей.Допустим, у вас есть класс CalculationService
в вашем другом проекте.Для этого вам нужно зарегистрировать этот класс как сервис, который может быть внедрен:
services.AddScoped<CalculationService>();
Тогда ваш класс может получать DbContext
(или любые другие услуги) через DI:
public class CalculationService
{
private RetContext _context;
public CalculationService(RetContext context)
{
_context = context;
}
}
Естественно, вы не сможете создать экземпляр своего класса вручную, например так:
var service = new CalculationService();
Вместо этого вам нужно будет создать любой класс, необходимый для использования вашего CalculationService
, чтобы также получать его через DIи сделать этот класс также инъекционным.