У меня есть общий проект, в который я поместил свои общие и базовые логи c для повторного использования в других проектах и базовый проект Normal asp.net поверх него.
ВОбщий базовый проект, который у меня есть:
class DbContextBase : DbContext
{
public DbSet<ActivityLog> ActivityLogs { get; set; }
public DbSet<Event> Events { get; set; }
SaveChanges(...)
}
class MyEventProcessor
{
private readonly DbContextBase _databaseContext;
public MyEventProcessor(DbContextBase databaseContext)
{
_databaseContext=databaseContext;
}
public void AddEvent(Event e){}
public void ProcessEvent(Event e){}
}
В ядре .net webApi, у меня есть логика, относящаяся к моему домену
class MyDomainDbContext : DbContextBase
{
public DbSet<User> Users{ get; set; }
}
class UserRepository
{
private readonly MyDomainDbContext _databaseContext;
public UserRepository(MyDomainDbContext databaseContext){_databaseContext=databaseContext;}
}
public class Startup
{
public Startup(IConfiguration configuration)
{
services.AddDbContext<MyDomainDbContext>([options]);
services.AddScoped<UserRepository>();
services.AddScoped<EventProcessor>();
}
}
Проблема в том, что при запуске не получается, что невозможнонайти DbContextBase, потому что он не зарегистрирован.Я думал об изменении регистрации на интерфейс, как показано ниже, но тогда, очевидно, у меня не будет доступа к DbSets моего домена в моих репозиториях.
services.AddDbContext<IDbContextBase,MyDomainDbContext>([options]);
Итак, вопрос в том, как мне установить это так, чтобыMyEventProcessor и UserRepository могут считывать и записывать в один и тот же контекст базы данных.