C# 在使用.net core时,我应该如何存储entity framework 6连接字符串

C# 在使用.net core时,我应该如何存储entity framework 6连接字符串,c#,.net,entity-framework,.net-core,C#,.net,Entity Framework,.net Core,我有一个.net核心REST api项目,它调用使用实体框架的.net 4.6程序集。我还有一个调用该程序集的测试项目。提供连接字符串的旧方法是让App或web.Config中的连接字符串看起来像 <connectionStrings> <add name="MyDbContext" connectionString="data source=(LocalDB)\MSSQLLocalDB;AttachDBFilename=|DataDirectory|\TestDB.m

我有一个.net核心REST api项目,它调用使用实体框架的.net 4.6程序集。我还有一个调用该程序集的测试项目。提供连接字符串的旧方法是让App或web.Config中的连接字符串看起来像

<connectionStrings>
    <add name="MyDbContext" connectionString="data source=(LocalDB)\MSSQLLocalDB;AttachDBFilename=|DataDirectory|\TestDB.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
我想我必须把信息放在appsettings.Json中

"ConnectionStrings": {
  "MyDatabase": "Server=(localdb)\\mssqllocaldb;Database=TestDB;Trusted_Connection=True;"
},
但是我需要改变我的DbContext怎么办?我的测试项目如何设置连接字符串


这应该是很多人以前做过的一个简单的例子,但我在谷歌上找不到任何例子。谢谢。

那没什么意思。我有一个有效的解决方案,但我不相信我已经做对了,有人有更好的吗

我创建了一个新的设置类来保存设置,目前只保存数据库连接

public class Settings
{
    public string DBConnection { get; set; }
}
然后我将设置放在appsettings.json中

"Settings": {
    "DBConnection": "Server=(localdb)\\mssqllocaldb;Database=TestDB;Trusted_Connection=True;"  
}
并在启动时将此配置绑定到设置对象

private void AddConfigurationSettingsSingleton(IServiceCollection services)
{
    var config = new Settings();
    Configuration.GetSection("Settings").Bind(config);
    services.AddSingleton(config);
}
然后DI将其粘贴到任何需要的地方

public class Repository
{
    private readonly SkinDbContext dbContext; 
    public Repository(Settings settings)
    {
        dbContext = new MyDbContext(settings.DBConnection);
    }
任何my DBContext都会获取连接字符串

public class MyDbContext: DbContext
{
    public MyDbContext(string connectionString): base(connectionString)
    {
    }
}
public class MyDbContext: DbContext
{
    public MyDbContext(string connectionString): base(connectionString)
    {
    }
}