Nella seguente applicazione console (.Net core 2.0), lo scaffold-dbcontext
creato il seguente DbContext
public partial class MyContext : DbContext
{
public virtual DbSet<Tables> Tables { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlServer(Program.Conn); }
}
protected override void OnModelCreating(ModelBuilder modelBuilder) { .... }
}
Nel Main () ( static void Main(string[] args)
), il seguente codice
var services = new ServiceCollection();
var conn = configuration.GetConnectionString("MySource");
services.AddDbContext<MyContext>(o => o.UseSqlServer(conn)); // Error
ottenuto il seguente errore di runtime?
AddDbContext è stato chiamato con la configurazione, ma il tipo di contesto 'MyContext' dichiara solo un costruttore senza parametri. Ciò significa che la configurazione passata a AddDbContext non verrà mai utilizzata
Come l'errore ha detto che se si configura MyContext
tramite AddDbContext
allora è necessario aggiungere anche un costruttore che riceve un parametro di tipo DbContextOptions<MyContext>
nella classe MyContext
come di seguito
public MyContext(DbContextOptions<MyContext> options)
: base(options)
{ }
Se non lo fai, ASP.Net Core non sarà in grado di iniettare la configurazione impostata con AddDbContext
.