У меня есть эти 2 проекта App.ClassLibrary и App.Data
Я следовал этому руководству https://garywoodfine.com/using-ef-core-in-a-separate-class-library-project/, чтобы переместить свои миграции и модели в App.ClassLibrary.Одним из таких шагов было создание ApplicationDbContext в библиотеке классов:
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }
public DbSet<Users> Users { get; set; }
public DbSet<UserRoles> UserRoles { get; set; }
public DbSet<Applications> Applications { get; set; }
public DbSet<Roles> Roles { get; set; }
public DbSet<EventLogs> EventLogs { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema(schema: DatabaseGlobals.SchemaName);
modelBuilder.Entity<Users>();
modelBuilder.Entity<UserRoles>();
modelBuilder.Entity<Applications>();
modelBuilder.Entity<Roles>();
modelBuilder.Entity<EventLogs>();
base.OnModelCreating(modelBuilder);
}
public override int SaveChanges()
{
Audit();
return base.SaveChanges();
}
public async Task<int> SaveChangesAsync()
{
Audit();
return await base.SaveChangesAsync();
}
private void Audit()
{
var entries = ChangeTracker.Entries().Where(x => x.Entity is Users && (x.State == EntityState.Added || x.State == EntityState.Modified));
foreach (var entry in entries)
{
if (entry.State == EntityState.Added)
{
((Users)entry.Entity).CreatedOn = DateTime.UtcNow;
}
((Users)entry.Entity).UpdatedOn = DateTime.UtcNow;
}
}
}
В App.Data я пытаюсь сослаться на ApplicationDbContext, но пока это не работает
private ApplicationDbContext dbContext = new ApplicationDbContext();
Раньше у меня был похожий проект в ASP.NET MVC 5 с ApplicationDBContext, подобным этому:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public virtual DbSet<AspNetUsersExtendedDetails> AspNetUsersExtendedDetails { get; set; }
public virtual DbSet<AspNetApplications> AspNetApplications { get; set; }
public virtual DbSet<AspNetEventLogs> AspNetEventLogs { get; set; }
public virtual DbSet<AspNetRolesExtendedDetails> AspNetRolesExtendedDetails { get; set; }
public virtual DbSet<AspNetUserRolesExtendedDetails> AspNetUserRolesExtendedDetails { get; set; }
public virtual DbSet<AspNetUserAccessTokens> AspNetUserAccessTokens { get; set; }
public ApplicationDbContext() : base("ManagementStudio")
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
Я мог бы использовать
private ApplicationDbContext dbContext = new ApplicationDbContext();
без проблем, но теперь я догадываюсьиз-за разных версий и фреймворка его не работает.Не уверен, что я могу сделать, чтобы получить dbcontext.
РЕДАКТИРОВАТЬ:
Это ошибка, которую я получаю в моем приложении .Net Core 2.1
Нет аргумента, чтосоответствует обязательному формальному параметру 'options' для 'ApplicationDbContext.ApplicationDbContext (DbContextOptions)'