Я, наверное, нашел решение. Есть хорошее объяснение того, что происходит скрытно при создании миграций в документах [здесь] .
В моем случае, согласно документации, EF Core Tools пытаются создать экземпляр SQLite_DbContext
, не передавая параметров конструктору. Такого конструктора не было в моем коде, потому что только один принимает один параметр (options
). Это причина, по которой он "не смог создать объект". Когда я удалил свой пользовательский конструктор из кода, он начал правильно генерировать миграции.
В качестве альтернативы, как я вижу, есть также возможность взять под контроль то, как создается DbContext. Существует возможность создать «фабрику», которую инструменты EF будут использовать для создания экземпляра этого класса:
public class SQLite_DbContextFactory : IDesignTimeDbContextFactory<SQLite_DbContext>
{
public SQLite_DbContext CreateDbContext(string[] args)
{
var optionsBuilder = new DbContextOptionsBuilder<SQLite_DbContext>();
optionsBuilder.UseSqlite("Data Source=blog.db");
return new SQLite_DbContext(optionsBuilder.Options);
}
}