我有一个由其他dotnet项目(Azure函数应用程序和Web应用程序)使用的数据库项目。我想使用 dotnet ef core cli 来进行迁移,但是我不想将连接字符串保留在代码中(我想让我的仓库公开)。
这是我当前的DbContext:
public ChadwickDbContext(DbContextOptions options): base(options) {}
当我运行类似的内容时:
dotnet ef migrations add InitialCreate
我得到了错误:
无法创建类型为“ ChadwickDbContext”的对象。为了 设计时支持的不同模式,请参阅 https://go.microsoft.com/fwlink/?linkid=851728
之所以如此,是因为我对连接字符串进行了如下硬编码:
public ChadwickDbContext(string connectionString = "<connection string>"): base(GetOptions(connectionString)) {}
是否可以通过 cli 设置连接字符串或在仅数据库项目中包含诸如appsettings.json
之类的环境文件? / p>
Scaffolding似乎很接近我想要的,但这似乎是生成您的上下文和模型的一种方法(已经完成)。
答案 0 :(得分:0)
看起来最好的方法是设置自己的json文件并注册:
示例:
public ChadwickDbContext(): base(GetOptions()) {}
private static DbContextOptions GetOptions()
{
var config = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var connectionString = config["ConnectionStrings:DefaultConnection"];
var options = new DbContextOptionsBuilder();
options.UseSqlServer(connectionString);
return options.Options;
}
Appsettings.json
{
"ConnectionStrings": {
"DefaultConnection": "<Connection String>"
}
}