У меня есть приложение с 3 уровнями (Presentation - Business - Data), созданное с использованием Asp.Net MVC Core 2.1
В моем уровне Presentation у меня есть класс ApplicationDbContext, который создает и заполняет тестовую базу данных:
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
SeedData(builder);
}
// Database Tables
public DbSet<Customer> Customers { get; set; }
public DbSet<Ingredient> Ingredients { get; set; }
public DbSet<Order> Orders { get; set; }
public DbSet<OrderDetail> OrderDetails { get; set; }
public DbSet<Pizza> Pizzas { get; set; }
public DbSet<PizzaIngredient> PizzaIngredients { get; set; }
// Fill Database with sample data
private void SeedData(ModelBuilder builder)
{
// Seed data
}
Указанный класс внедряется в классе Startup.cs (также на уровне представления):
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>().AddEntityFrameworkStores<ApplicationDbContext>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Latest);
Теперь я хочу использовать этот класс ApplicationDbContext в слое данных для разделения кода.Как бы я лучше пойти об этом?Внедрение класса с помощью конструктора, похоже, не работает (код серьезности Описание Ошибка состояния подавления строки файла проекта CS0246 Не удалось найти тип или имя пространства имен ApplicationDbContext (отсутствует директива using или ссылка на сборку?))
namespace PizzaShop.Data.Repositories
{
public class PizzaRepo : IPizzaRepo
{
private readonly ApplicationDbContext _context;
public PizzaRepo(ApplicationDbContext context)
{
_context = context;
}
public async Task<int> AddEntityAsync(Pizza entity)
{
_context.Pizzas.Add(entity);
return await _context.SaveChangesAsync();
}
//...
}
}
Архитектура: