EF核心集连接字符串

时间:2019-12-22 23:32:46

标签: c# .net entity-framework entity-framework-core

我有一个由其他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似乎很接近我想要的,但这似乎是生成您的上下文和模型的一种方法(已经完成)。

1 个答案:

答案 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>"
  }
}