我在 appsettings.json 文件中定义了一个连接字符串。现在我想在我的 TextDBConext 文件中读取它,我该怎么做?
public class TestContext: DbContext
{
public DbSet<TestTable> TestTable { get; set; }
public TestContext()
{
}
public IConfiguration Configuration { get; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Connection string"); //I have hardcoded here, but I want from appsettings.json
}
}
Run Code Online (Sandbox Code Playgroud)
Appsettings.json 文件:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings": {
"connection_string": "Connection String"
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以在启动文件中设置数据库上下文,并且OnConfiguring根本不覆盖。只需添加一个DbContextOptions<TContext>传入 DbContext 类的构造函数即可。该构造函数应将参数传递给base类的构造函数,然后AddDbContext<TContext>按Startup.Configure如下方式调用:
// your TestContext showing constructor
public class TestContext : DbContext
{
public TestContext(DbContextOptions<TestContext> options) : base(options){ }
}
// Then in Startup.cs
public class Startup
{
public IConfiguration Configuration {get;}
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<TeamsDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("connection_string")));
}
}
Run Code Online (Sandbox Code Playgroud)
值得注意的是,该AddDbContext<TContext>方法具有重载,允许将上下文的服务生命周期设置为 Singleton 或 Transient(如果您愿意)。默认为范围。
| 归档时间: |
|
| 查看次数: |
11244 次 |
| 最近记录: |