当使用.NET Core时,我应该如何存储Entity Framework 6连接字符串?

3

我有一个 .net core 的 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>

您的dbContext执行了

public MyDbContext(): base("name=MyDbContext")

我假设我必须将信息放入我的appsettings.Json中,例如:
"ConnectionStrings": {
  "MyDatabase": "Server=(localdb)\\mssqllocaldb;Database=TestDB;Trusted_Connection=True;"
},

那么我需要如何更改我的DbContext呢?我的测试项目又如何设置连接字符串呢?这应该是一个很简单的问题,很多人以前都做过,但是我在谷歌上找不到任何例子。谢谢。

1个回答

0

嗯,那似乎没有引起太多兴趣。我已经有一个可行的解决方案了,但我并不确定我是否做得正确,有更好的方法吗?

我创建了一个新的Settings类来保存设置,目前只有DbConnection。

public class Settings
{
    public string DBConnection { get; set; }
}

然后我将设置放在appsettings.json文件中

"Settings": {
    "DBConnection": "Server=(localdb)\\mssqllocaldb;Database=TestDB;Trusted_Connection=True;"  
}

并将此配置绑定到启动中的 Settings 对象

private void AddConfigurationSettingsSingleton(IServiceCollection services)
{
    var config = new Settings();
    Configuration.GetSection("Settings").Bind(config);
    services.AddSingleton(config);
}

然后依赖注入会把它插入到任何需要的地方。

public class Repository
{
    private readonly SkinDbContext dbContext; 
    public Repository(Settings settings)
    {
        dbContext = new MyDbContext(settings.DBConnection);
    }

我的DBContext需要连接字符串

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接