我正在学习ASP.NET 5.我真正感到困惑的一个方面是配置。对于我的生活,我无法弄清楚如何从类中的配置文件加载值。在ASP.NET 5之前,我只想使用:
ConfigurationManager.AppSettings["KeyName"];
然而,现在使用ASP.NET 5,我有点困惑。目前,我在Startup.cs中有以下内容:
public IConfiguration Configuration { get; set; }
public Startup(IHostingEnvironment environment)
{
var configuration = new Configuration()
.AddJsonFile("config.json");
Configuration = configuration;
}
这似乎加载了配置设置就好了。但是,假设我有一个名为“Customer.cs”的类,它与数据库交互。数据库连接字符串位于config.json中。我如何获得这个价值?在我的所有POCO中加载“config.json”似乎并不高效。与此同时,上述方法似乎不允许我以全球方式访问Configuration
。
如何加载配置设置并检索POCO中的配置值?
谢谢
答案 0 :(得分:-1)
您不应该在每个POCO实体中加载连接字符串(您是否曾使用过数据库上下文?)。如果您正在使用Entity Framework 7,则可以在应用程序启动时加载数据库上下文服务。
如果您的config.json
看起来像这样:
"Data": {
"DefaultConnection": {
"Connectionstring": "your_connection_string"
}
您可以像这样设置环境:
public void ConfigureServices(IServiceCollection services)
{
// Add EF services to the services container
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<Your__DB__Context__Class>(options =>
options.UseSqlServer(Configuration.Get("Data:DefaultConnection:ConnectionString")));
}
//... other services...
}
然后在您的控制器中,您可以通过依赖注入直接使用DbContext:
public class Your__Controller : Controller
{
[FromServices]
public Your__DB__Context__Class DbContext { get; set; }
//...
}
如果您需要在控制器外部使用DbContext服务,您必须这样做:
class NotAControllerClass : NotAController
{
private readonly Your__DB__Context__Class _dbContext;
public NotAControllerClass(Your__DB__Context__Class DbContext)
{
_dbContext = DbContext;
}
//do stuff here...
}
最后,如果您不使用EF7,而是使用EF或自定义ORM的早期版本,则需要自定义依赖注入。尝试在互联网上搜索。