Sto solo sperimentando con EF Core e SQLite e sono stato leggermente smembrato dal problema.
Se provo a configurare il database in questo modo:
services.AddDbContext<MyDbContext>(options => options.UseSqlite("Filename=./App_Data/dashboard.db") );
E poi eseguire:
dotnet ef migrations add InitialCreate -c MyDbContext
Ottengo:
'Nessun provider di database è stato configurato per questo DbContext'
Ma se lo faccio:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=./App_Data/dashboard.db");
}
Tutto funziona come previsto.
Il mio contesto è impostato per funzionare con l'interfaccia fluente:
public MyDbContext(DbContextOptions options)
: base(options)
{
}
public MyDbContext(DbContextOptions<MyDbContext> options)
: base(options)
{
}
Da vari articoli sembra che altri abbiano un approccio fluente e funzionante.
Qualcun altro ha avuto questo problema e risolto utilizzando Core 2.1.0?
Vorrei provare ad aggiungere un factory db context design time al tuo progetto in questo modo:
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
namespace yournamespace
{
public class YourDbContextDesignTimeFactory : IDesignTimeDbContextFactory<YourDbContext>
{
public YourDbContext CreateDbContext(string[] args)
{
var builder = new DbContextOptionsBuilder<YourDbContext>();
builder.UseSqlite("Data Source=somename.db");
return new YourDbContext(builder.Options);
}
}
}
Non credo che la stringa di connessione debba essere corretta, EF userà questo per creare il contesto durante la generazione della migrazione