【发布时间】:2020-12-03 23:32:24
【问题描述】:
我正在使用下面的代码来检索连接字符串,它工作正常。但是,配置对象必须通过层。 .Net 的早期版本允许我直接在数据层中获取连接字符串。那么我仍然可以这样做(以及我该怎么做)还是需要像现在一样通过应用程序传递配置对象?
在startup.cs中
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
...
services.AddSingleton(_ => Configuration);
...
}
MyController.cs
public class MyController : Controller
{
protected readonly IConfiguration Configuration;
public MyController(IConfiguration configuration)
{
Configuration = configuration;
}
public IActionResult ListRecords()
{
DatabaseContext ctx = new DatabaseContext(Configuration);
return View();
}
}
DatabaseContext.cs
public class DatabaseContext : DbContext
{
private readonly IConfiguration config;
public DatabaseContext(IConfiguration config)
{
this.config = config;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(config["ConnectionStrings:Dev"]);
}
}
【问题讨论】:
-
您可以在 Startup 类中执行此操作。几乎在互联网上找到的每个示例都是如此。
-
你应该注入你的数据库上下文,而不是手动创建一个。这样都是从启动类配置的
标签: c# asp.net-core entity-framework-core