AddDbContext вызывается с настройкой, но тип контекста "MyContext" объявляет только конструктор без параметров?

В следующем консольном приложении (.Net core 2.0) scaffold-dbcontext создан следующий 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) { .... }
}

В Main() (static void Main(string[] args)) следующий код

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

получила следующую ошибку во время выполнения?

AddDbContext вызывается с настройкой, но тип контекста "MyContext" объявляет конструктор без параметров. Это означает, что конфигурация, переданная в AddDbContext, никогда не будет использоваться

Ответ 1

Как сказано в сообщении об ошибке, если вы настроите MyContext через AddDbContext, то вам также нужно добавить конструктор, который получает параметр типа DbContextOptions<MyContext> в ваш класс MyContext, как показано ниже

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

Если вы этого не сделаете, ASP.Net Core не сможет ввести конфигурацию, установленную с помощью AddDbContext.