我有一个简单的控制台应用程序,用于更新数据库(Db托管在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(Object 实体) Microsoft.EntityFrameworkCore.DbContext.SetEntityState(对象实体, EntityState实体状态)位于 Microsoft.EntityFrameworkCore.DbContext.Add(对象实体)位于
据我所知,我已经完全按照建议进行了操作;尽管我真的不明白,但为什么它在AKS中的行为会有所不同。有人可以帮我一下吗?