C# Json连接字符串-IConfiguration.net核心
我正在尝试访问存储在应用程序中的连接。我的解决方案有两个项目,一方面是数据库项目(DAL),另一方面是WEB API 在web api上,我有一个App.settings,其中包含两个环境的连接字符串 我正在尝试配置DBContext以从那里获取连接字符串 我做错了什么 DAL项目: DBContext:C# Json连接字符串-IConfiguration.net核心,c#,sql-server,asp.net-core,configuration,environment-variables,C#,Sql Server,Asp.net Core,Configuration,Environment Variables,我正在尝试访问存储在应用程序中的连接。我的解决方案有两个项目,一方面是数据库项目(DAL),另一方面是WEB API 在web api上,我有一个App.settings,其中包含两个环境的连接字符串 我正在尝试配置DBContext以从那里获取连接字符串 我做错了什么 DAL项目: DBContext: using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata;
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using DAL.Models.ProcedureModels;
using DAL;
using Microsoft.Extensions.Configuration;
..........
public DBContext()
{
}
public DBContext(DbContextOptions<DBContext> options)
: base(options)
{
}
.........
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
IConfiguration configuration;
optionsBuilder.UseSqlServer(configuration.GetConnectionString("local"));
}
}
这声明了一个未初始化的变量配置
,因此不包含任何值,然后立即尝试使用它。这是行不通的。您必须首先初始化配置
变量
但这并不能真正帮助您,因为您需要从这里的web应用程序获取配置
与其使用onconfigurang
,我建议您只使用带有DbContextOptions
的构造函数,然后依靠应用程序从库中正确注册数据库上下文
因此,在web应用程序启动的配置服务中,添加以下内容:
services.AddDbContext<DBContext>(options =>
{
options.UseSqlServer(configuration.GetConnectionString("local"));
});
services.AddDbContext(选项=>
{
options.UseSqlServer(configuration.GetConnectionString(“本地”);
});
在那里,DBContext
将是您的DAL
项目中的类型。如果您坚持在DBContext
中访问connectionstring,您可以尝试从服务集合中解析IConfiguration
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
private readonly IConfiguration _configuration;
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options,
IConfiguration configuration)
: base(options)
{
_configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
var connectionString = _configuration.GetConnectionString("local");
optionsBuilder.UseSqlServer(_configuration.GetConnectionString("local"));
}
}
}
public类ApplicationDbContext:IdentityDbContext
{
专用只读IConfiguration\u配置;
公共应用程序DBContext(DbContextOptions选项,
i配置(配置)
:基本(选项)
{
_配置=配置;
}
配置时受保护的覆盖无效(DBContextOptions Builder Options Builder)
{
如果(!optionBuilder.IsConfigured)
{
var connectionString=_configuration.GetConnectionString(“本地”);
optionsBuilder.UseSqlServer(_configuration.GetConnectionString(“local”));
}
}
}
services.AddDbContext<DBContext>(options =>
{
options.UseSqlServer(configuration.GetConnectionString("local"));
});
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
private readonly IConfiguration _configuration;
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options,
IConfiguration configuration)
: base(options)
{
_configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
var connectionString = _configuration.GetConnectionString("local");
optionsBuilder.UseSqlServer(_configuration.GetConnectionString("local"));
}
}
}