У меня есть проект только с одной библиотекой классов. Я сейчас пытаюсь сгенерировать миграцию в библиотеке классов.
Вот мой DbContext
:
public class DatabaseContext : DbContext, IDatabaseContext
{
public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options)
{ }
public DbSet<Security> Services { get; set; }
public DatabaseFacade DatabaseAccessor => this.Database;
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.EnableSensitiveDataLogging();
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("dbo");
modelBuilder.Entity<Security>().HasNoKey();
base.OnModelCreating(modelBuilder);
}
}
Когда я запускаю команду
dotnet ef migrations add InitialCreate --project SecurityAttribute
Я получаю следующую ошибку:
Невозможно создать объект типа 'DatabaseContext'. Для различных шаблонов, поддерживаемых во время разработки, см. https://go.microsoft.com/fwlink/?linkid=851728
Мой IServiceCollections
выглядит следующим образом:
public static IServiceCollection AddServiceAndRoleSecurity(this IServiceCollection services)
{
services.AddTransient<ISecurityService, SecurityService>();
services.AddMemoryCache();
services.AddTransient<ISecurityRepository, SecurityRepository>();
services.AddDbContext<IDatabaseContext, DatabaseContext>(options => options.UseSqlServer(
@"Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=SecurityAttribute;Integrated Security=SSPI;",
sqlServerOptions => sqlServerOptions.CommandTimeout(10 * 60)
));
services.AddTransient<IDatabaseContextFactory, DatabaseContextFactory>();
return services;
}
public static IHost CreateDatabase(this IHost host)
{
using (var scope = host.Services.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<IDatabaseContext>();
var migrations = db.DatabaseAccessor.GetPendingMigrations();
if (migrations.Any())
db.DatabaseAccessor.Migrate();
}
return host;
}
Моя библиотека классов будет используется как пакет nuget. Вот почему у меня есть только библиотека классов.