我正在尝试使用Entity Framework将数据库连接到.NET Core中。模型和上下文是通过DB第一种方法构建的。
在我的创业公司中,我有以下几行代码:
// This method gets called by the runtime.
////Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<PersonalProfileContext>(options => options
.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddMvc();
}
在我的上下文中,我有以下内容:
public virtual DbSet<Companies> Companies { get; set; }
public virtual DbSet<Qualifications> Qualifications { get; set; }
public virtual DbSet<Roles> Roles { get; set; }
public virtual DbSet<RolesCompanies> RolesCompanies { get; set; }
public virtual DbSet<RolesUsers> RolesUsers { get; set; }
public virtual DbSet<Users> Users { get; set; }
public PersonalProfileContext(DbContextOptions<PersonalProfileContext> options)
: base(options)
{
return;
}
在startup.cs中,我收到一条错误,说AddDBContext行的值不能为null。
在我的appsettings.json文件中,它是以下内容:
{
"DefaultConnection": {
"ConnectionString": "" <-- Not included for safety reasons
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"ApplicationInsights": {
"InstrumentationKey": "" <-- Not included for security reasons
}
}
有谁知道如何解决这个问题?
答案 0 :(得分:1)
这里的问题是appsettings.json的连接字符串部分不太正确。
以下是您提供的内容:
"ConnectionStrings": {
"DefaultConnection": "" <-- Not included for safety reasons
}
而你需要的是:
services.AddDbContext<PersonalProfileContext>(options => options
.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
这导致以下行失败:
ConnectionStrings
由于名为DefaultConnection
的{{1}}集合中没有连接字符串,因此:
Configuration.GetConnectionString("DefaultConnection")
返回null
,这意味着:
options
.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
返回null
,意味着null
被传递到AddDbContext
的调用中。
这是一个容易犯的错误,而不是一个容易发现的错误。