当我尝试仅使用默认构造函数离开我的db上下文但是传入Startup.cs中的连接字符串时,我得到一个错误' AddDbContext被调用了配置,但是上下文类型' ApplicationDbContext& #39;只声明一个无参数构造函数'。但是,如果我尝试通过以下方式在DbContext内部构建它:
private readonly IConfiguration _configuration;
public ApplicationDbContext([FromServices]IConfiguration configuration)
{
_configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(_configuration["ConnectionString"]);
}
使用时会出现投诉"无法创建类型' ApplicationDbContext'的实例。模型绑定的复杂类型不能是抽象或值类型,并且必须具有无参数构造函数"。如果同时拥有两个构造函数,我在尝试访问_configuration
时不出所料地得到一个空引用异常。我觉得这是一个很常见的情况,所以我必须遗漏一些明显的东西。
修改
在startup.cs中,我就是这样添加DbContext(在ConfigureServices
中):
services.AddDbContext<ApplicationDbContext>(/*options => options.UseSqlServer(Configuration["ConnectionString"])*/);
此外,该课程在ConfigureServices
:
services.AddIdentity<IdentityUser, IdentityRole>( options =>
{...})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
答案 0 :(得分:0)
您可以按如下方式定义单个构造函数:
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.office365.com',
port: 587,
domain: 'mydomain.com',
authentication: :login,
enable_starttls_auto: true,
user_name: 'myname@mydomain.com',
password: 'password'
}
两个论点都应该注入。