Dans l’application de console suivante (.Net core 2.0), le scaffold-dbcontext
A créé le DbContext
suivant.
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) { .... }
}
Dans le Main () (static void Main(string[] args)
), le code suivant
var services = new ServiceCollection();
var conn = configuration.GetConnectionString("MySource");
services.AddDbContext<MyContext>(o => o.UseSqlServer(conn)); // Error
vous avez l'erreur d'exécution suivante?
AddDbContext a été appelé avec configuration, mais le type de contexte 'MyContext' ne déclare qu'un constructeur sans paramètre. Cela signifie que la configuration transmise à AddDbContext ne sera jamais utilisée
Comme le dit l'erreur si vous configurez votre MyContext
à AddDbContext
, vous devez également ajouter un constructeur qui reçoit un paramètre de type DbContextOptions<MyContext>
dans votre classe MyContext
comme ci-dessous
public MyContext(DbContextOptions<MyContext> options)
: base(options)
{ }
Si vous ne le faites pas, ASP.Net Core ne pourra pas injecter la configuration que vous avez définie avec AddDbContext
.