使用配置调用AddDbContext,但上下文类型“MyContext”仅声明无参数构造函数?

在以下控制台应用程序(.Net core 2.0)中, scaffold-dbcontext创建了以下DbContext

 public partial class MyContext : DbContext { public virtual DbSet Tables { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlServer(Program.Conn); } } protected override void OnModelCreating(ModelBuilder modelBuilder) { .... } } 

在Main()( static void Main(string[] args) )中,代码如下

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

得到以下运行时错误?

使用配置调用AddDbContext,但上下文类型“MyContext”仅声明无参数构造函数。 这意味着永远不会使用传递给AddDbContext的配置

正如错误所说,如果您通过AddDbContext配置AddDbContext那么您还需要将一个接收类型为DbContextOptions的参数的构造函数添加到MyContext类中,如下所示

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

如果不这样做,ASP.Net Core将无法注入您使用AddDbContext设置的配置。