AddDbContext was called with configuration, but the context type 'MyContext' only declares a parameterless constructor?

32,537

As the error said it if you configure your MyContext through AddDbContext then you need too add a constructor that receive a parameter of type DbContextOptions<MyContext> into your MyContext class like below

public MyContext(DbContextOptions<MyContext> options)
    : base(options)
{ }

If you don't do that, ASP.Net Core will not be able to inject the configuration you set with AddDbContext.

Share:
32,537
ca9163d9
Author by

ca9163d9

Updated on August 30, 2020

Comments

  • ca9163d9
    ca9163d9 over 3 years

    In the following console application (.Net core 2.0), the scaffold-dbcontext created the following 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) { .... }
    }
    

    In the Main() (static void Main(string[] args)), the following code

    var services = new ServiceCollection();
    var conn = configuration.GetConnectionString("MySource");
    services.AddDbContext<MyContext>(o => o.UseSqlServer(conn)); // Error
    

    got the following run-time error?

    AddDbContext was called with configuration, but the context type 'MyContext' only declares a parameterless constructor. This means that the configuration passed to AddDbContext will never be used