我有一个.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搜索中找不到任何例子。感谢。
答案 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)
{
}
}