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
.
Author by
ca9163d9
Updated on August 30, 2020Comments
-
ca9163d9 over 3 years
In the following console application (.Net core 2.0), the
scaffold-dbcontext
created the followingDbContext
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 codevar 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