Azure 管道中的 EF Core class 库和迁移
EF Core class library and migrations in azure pipeline
我知道要在 class 库中使用 EF Core 需要一个启动项目,如下所述:
但是,我已经设法通过
使用单个 class 库项目(不使用启动项目)在本地 dotnet ef migrations bundle
- 为您的 dbcontext 添加一个 ConfigurationBuilder
- 覆盖“OnConfiguring”方法以使用 ConfigurationBuilder 读取您拥有的连接字符串。在我的例子中来自用户机密
public partial class MyContext : DbContext
{
private readonly IConfiguration configuration;
//will take the connection string from user secrets
public MyContext()
{
this.configuration = new ConfigurationBuilder()
.AddUserSecrets<ClpQUkMiContext>()
.Build();
}
public MyContext(IConfiguration configuration)
{
this.configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
var connectionString = configuration["ConnectionStringInUserSecret"]
optionsBuilder.UseSqlServer(connectionString);
}
}
但是,当我试图在 azure 管道中使用它时,它找不到连接字符串,我已将其存储在一个秘密变量中。
到目前为止我已经试过了
- 正在将
".AddEnvironmentVariables()"
添加到配置生成器。
- 在yaml文件中映射secret变量,如
variables:
MyConnectionString: $(MySecreatConnectionString) # Setting variable to be read by the context
如有任何帮助,我将不胜感激。
设法解决问题:要将秘密变量映射到配置可以读取的环境中,必须在每个任务中完成,正如这里清楚地解释的那样: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch#secret-variables
dev variable inside the task
我知道要在 class 库中使用 EF Core 需要一个启动项目,如下所述:
dotnet ef migrations bundle
- 为您的 dbcontext 添加一个 ConfigurationBuilder
- 覆盖“OnConfiguring”方法以使用 ConfigurationBuilder 读取您拥有的连接字符串。在我的例子中来自用户机密
public partial class MyContext : DbContext
{
private readonly IConfiguration configuration;
//will take the connection string from user secrets
public MyContext()
{
this.configuration = new ConfigurationBuilder()
.AddUserSecrets<ClpQUkMiContext>()
.Build();
}
public MyContext(IConfiguration configuration)
{
this.configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
var connectionString = configuration["ConnectionStringInUserSecret"]
optionsBuilder.UseSqlServer(connectionString);
}
}
但是,当我试图在 azure 管道中使用它时,它找不到连接字符串,我已将其存储在一个秘密变量中。 到目前为止我已经试过了
- 正在将
".AddEnvironmentVariables()"
添加到配置生成器。 - 在yaml文件中映射secret变量,如
variables:
MyConnectionString: $(MySecreatConnectionString) # Setting variable to be read by the context
如有任何帮助,我将不胜感激。
设法解决问题:要将秘密变量映射到配置可以读取的环境中,必须在每个任务中完成,正如这里清楚地解释的那样: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch#secret-variables
dev variable inside the task