使用.net核心时,如何存储实体框架6连接字符串

时间:2016-12-09 09:27:06

标签: 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.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怎么样?以及我的测试项目如何设置连接字符串?

这应该是很多人以前做过的一个简单的,但我在google搜索中找不到任何例子。感谢。

1 个答案:

答案 0 :(得分:0)

好吧,没那么兴趣。我有一个有效的解决方案,但我不相信我已经做对了,有人有更好的事情吗?

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

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);
    }

任何我的DBContext都接受连接字符串

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