Как подключить Dependency Injection сервис
Пытаюсь работать с контекстом данных через его интерфейс и при этом постоянно не создавая его экземпляры, когда возникает необходимость достать данные из базы. Сам контекст выглядит так
public class ApplicationContext : IdentityDbContext<UserViewModel, Role, string>
{
public Microsoft.EntityFrameworkCore.DbSet<DrinkViewModel> Drinks { get; set; }
public Microsoft.EntityFrameworkCore.DbSet<ShoppingBasketViewModel> ShoppingBaskets { get; set; }
public Microsoft.EntityFrameworkCore.DbSet<PurchasedGoodViewModel> PurchasedGoods { get; set; }
public Microsoft.EntityFrameworkCore.DbSet<OrderViewModel> Orders { get; set; }
public ApplicationContext(DbContextOptions<ApplicationContext> options)
: base(options)
{
}
public ApplicationContext()
{
Database.EnsureCreated();
}
}
Интерфейс выглядит так:
public interface IApplicationContext
{
DbSet<DrinkViewModel> Drinks { get; set; }
DbSet<OrderViewModel> Orders { get; set; }
DbSet<PurchasedGoodViewModel> PurchasedGoods { get; set; }
DbSet<ShoppingBasketViewModel> ShoppingBaskets { get; set; }
}
В Startupe через AddScoped подключаю контекст:
public void ConfigureServices(IServiceCollection services)
{
string connection = Configuration.GetConnectionString("DefaultConnection");
services.AddDbContext<IdentityDbContext<UserViewModel, Role, string>, ApplicationContext>(options =>
options.UseSqlServer(connection));
services.AddScoped<IApplicationContext, ApplicationContext>();
services.AddIdentity<UserViewModel, Role>().
AddEntityFrameworkStores<ApplicationContext>().
AddDefaultTokenProviders();
services.AddDistributedMemoryCache();
services.AddSession();
В этом случае выдается ошибка "Some services are not able to be constructed' ". Не могли вы подсказать, как ее исправить? И Как обращаться впоследствии к контексту? Если в поле, то все равно приходится заново создавать экземпляр
private IApplicationContext context = new ApplicationContext();
Заранее спасибо за помощь!