C# EF Core DbContext在AKS中出错,但在容器中不在本地
我有一个简单的控制台应用程序正在更新数据库(数据库托管在Azure中)。我正在手动配置DbContext,如下所示:C# EF Core DbContext在AKS中出错,但在容器中不在本地,c#,azure,entity-framework-core,C#,Azure,Entity Framework Core,我有一个简单的控制台应用程序正在更新数据库(数据库托管在Azure中)。我正在手动配置DbContext,如下所示: var options = new Microsoft.EntityFrameworkCore.DbContextOptions<MyContext>(); var myContext = new MyContext(options); var myRepository = new MyRepository(myContext
var options = new Microsoft.EntityFrameworkCore.DbContextOptions<MyContext>();
var myContext = new MyContext(options);
var myRepository = new MyRepository(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( ... );
}
}
var options=new Microsoft.EntityFrameworkCore.DbContextOptions();
var myContext=新的myContext(选项);
var myRepository=newmyrepository(myContext);
MyContext看起来像这样:
var options = new Microsoft.EntityFrameworkCore.DbContextOptions<MyContext>();
var myContext = new MyContext(options);
var myRepository = new MyRepository(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( ... );
}
}
公共类MyContext:DbContext,IMyContext
{
公共MyContext(DbContextOptions选项):基本(选项){}
公共DbSet MyData{get;set;}
配置时受保护的覆盖无效(DBContextOptions Builder Options Builder)
{
optionsBuilder.UseSqlServer(…);
}
}
我编译并在本地的容器中运行它,它工作得很好。但是,一旦我将映像添加到AKS群集,我就会出现以下错误:
未处理的异常:System.InvalidOperationException:无数据库
已为此DbContext配置提供程序。提供者可以是
通过重写DbContext.onconfig方法或通过
在应用程序服务提供程序上使用AddDbContext。如果
使用AddDbContext,然后还要确保您的DbContext类型
在其构造函数中接受DbContextOptions对象,然后
将其传递给DbContext的基构造函数。在
Microsoft.EntityFrameworkCore.Internal.DbContextServices.Initialize(IServiceProvider
scopedProvider、IDbContextOptions、DbContext context(上下文)选项)在 Microsoft.EntityFrameworkCore.DbContext.get\u InternalServiceProvider() 在Microsoft.EntityFrameworkCore.DbContext.get_DbContextDependencies()中 在 Microsoft.EntityFrameworkCore.DbContext.EntryWithoutDetectChanges(对象 实体)在 Microsoft.EntityFrameworkCore.DbContext.SetEntityState(对象实体, EntityState(实体状态)位于 Microsoft.EntityFrameworkCore.DbContext.Add(对象实体)位于
据我所知,我完全按照它的建议做了;虽然我真的不明白为什么它在AKS中表现不同。有人能帮我解释一下吗?我通常会在Startup.cs中传递conenction字符串,而不是在Context类中传递。services.AddDbContext(options=>options.UseSqlServer(Configuration.GetConnectionString(“mydbstring”));如果这会有任何不同,则不需要担心。这是一个控制台应用程序,因此我没有Asp.Net核心基础结构。@SmileyDev显示
UseSqlServer(…)的完整代码
由于它只是在中包含连接字符串,我不确定这是否有用。本地和AKS的连接字符串是否相同?我通常会在Startup.cs中传递连接字符串,而不是在Context类中传递。services.AddDbContext(options=>options.UseSqlServer(Configuration.GetConnectionString(“mydbstring”));如果这会有任何不同,则不需要担心。这是一个控制台应用程序,因此我没有Asp.Net核心基础结构。@SmileyDev显示UseSqlServer(…)的完整代码
因为它只包含连接字符串,我不确定这是否有用。本地和AKS的连接字符串是否相同?