У меня есть простое консольное приложение, которое обновляет базу данных (база данных размещается в Azure). Я вручную настраиваю DbContext следующим образом:
var options = new Microsoft.EntityFrameworkCore.DbContextOptions<MyContext>();
var myContext = new MyContext(options);
var myRepository = new MyRepository(myContext);
MyContext выглядит так:
public class MyContext : DbContext, IMyContext
{
public MyContext(DbContextOptions<MyContext> options) : base(options) { }
public DbSet<MyEntity> MyData { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer( ... );
}
}
Я компилирую это и запускаю внутри контейнера локально, и он работает нормально. Однако, как только я добавляю образ в кластер AKS, я получаю следующую ошибку:
Необработанное исключение: System.InvalidOperationException: Нет базы данных
провайдер был настроен для этого DbContext. Поставщик может быть
настраивается путем переопределения метода DbContext.OnConfiguring или
используя AddDbContext в сервис-провайдере приложений. Если
AddDbContext используется, а затем убедитесь, что ваш тип DbContext
принимает объект DbContextOptions в своем конструкторе и
передает его в базовый конструктор для DbContext. в
Microsoft.EntityFrameworkCore.Internal.DbContextServices.Initialize (IServiceProvider
scopedProvider, IDbContextOptions contextOptions, контекст DbContext)
в
Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider ()
в Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies ()
в
Microsoft.EntityFrameworkCore.DbContext.EntryWithoutDetectChanges (Объект
субъект) в
Microsoft.EntityFrameworkCore.DbContext.SetEntityState (объектный объект,
EntityState entityState) в
Microsoft.EntityFrameworkCore.DbContext.Add (объектная сущность) в
Насколько я вижу, я сделал именно то, что он предлагает; хотя то, что я действительно не понимаю, почему внутри АКС ведет себя по-разному. Кто-нибудь может пролить свет на это для меня, пожалуйста?