C# 如何重置EntityFramework.NET核心Web服务器的ConnectionString
Docker的常见设置:两个linux容器,一个是使用EntityFramework Core 2.2.6的.NET核心Web服务器,另一个是MS SQLServer 2017。持久数据保存在Docker卷中。使用C# 如何重置EntityFramework.NET核心Web服务器的ConnectionString,c#,sql-server,entity-framework-core,C#,Sql Server,Entity Framework Core,Docker的常见设置:两个linux容器,一个是使用EntityFramework Core 2.2.6的.NET核心Web服务器,另一个是MS SQLServer 2017。持久数据保存在Docker卷中。使用docker compose,它不是一个蜂群 启动SQLServer容器时,必须将SA密码作为环境变量提供给容器。但是,您可以在以后使用docker container inspect从容器外部读取此env。这显然会危及安全 这就引出了两个问题: (已讨论)有什么更好的方法向SQLSe
docker compose
,它不是一个蜂群
启动SQLServer容器时,必须将SA密码作为环境变量提供给容器。但是,您可以在以后使用docker container inspect
从容器外部读取此env。这显然会危及安全
这就引出了两个问题:
公共类启动
{
//此方法由运行时调用。请使用此方法将服务添加到容器中。
public void配置服务(IServiceCollection服务)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddDbContext(选项=>
{
使用SQLServer(配置[“AppSettings:ConnectionString]”);
});
}
//此方法由运行时调用。请使用此方法配置HTTP请求管道。
公共无效配置(IApplicationBuilder应用程序,IHostingEnvironment环境)
{
app.UseAuthentication();
app.UseMvc();
使用IServiceScope serviceScope=app
.应用程序服务
.GetRequiredService()
.CreateScope();
var context=serviceScope.ServiceProvider.GetService();
var connection=context.Database.GetDbConnection();
//尝试更改PW的connection.open()。如果失败,请使用默认PW。
bool needToChangePW=CheckLoginPassword(连接);
//迁移到(创建和)更新数据库
Migrate();
//迁移后更改PW(因为可能DB以前不存在)
如果(需要更改PW)
{
connection.Open();
context.Database.ExecuteSqlCommand(string.Format(“使用密码='{0}'更改SA登录名,SA_更改了_密码”);
connection.Close();
//在这里,我可以在配置中设置ConnectionString。
//但是我怎样才能让EntityFramework实际使用这个更新的字符串?!
配置[“AppSettings:ConnectionString”]=“使用新密码修改的字符串”;
}
}
}
试试这个
_dbContext.Database.GetDbConnection().ConnectionString = "your updated connection string";
就你而言:
var context = serviceScope.ServiceProvider.GetService<API_DB_Context>();
var connection = context.Database.GetDbConnection();
connection.ConnectionString="modified string with new password";
var context=serviceScope.ServiceProvider.GetService();
var connection=context.Database.GetDbConnection();
connection.ConnectionString=“使用新密码修改的字符串”;
试试这个
_dbContext.Database.GetDbConnection().ConnectionString = "your updated connection string";
就你而言:
var context = serviceScope.ServiceProvider.GetService<API_DB_Context>();
var connection = context.Database.GetDbConnection();
connection.ConnectionString="modified string with new password";
var context=serviceScope.ServiceProvider.GetService();
var connection=context.Database.GetDbConnection();
connection.ConnectionString=“使用新密码修改的字符串”;
您是否尝试过\u dbContext.Database.GetDbConnection().ConnectionString=“您更新的连接字符串”代码>?您是否尝试过\u dbContext.Database.GetDbConnection().ConnectionString=“您更新的连接字符串”代码>?