我正在使用Entityframework Core和code first方法设置一个新的数据库。我已经像下面代码清单中的那样设置了上下文类,还设置了所有必要的数据库表类。 现在我想使用以下代码创建新的数据库:
using (var context = new MyContext())
{
context.Database.EnsureCreated();
}
但我得到的错误是连接字符串不能为空。
我的连接字符串设置在appsettings.json文件中,当项目构建时,我将其复制到输出目录中。
我尝试了不同的方法从appsettings文件获取连接字符串,但结果都相同。在Startup类的Configuration属性中,我可以看到appsettings文件已正确加载,但当我想要使用以下内容获取字符串时
ConnectionString = Configuration["Connectionstrings:MyConnection"];
连接字符串始终为空。
我的Startup.cs文件中有以下内容:
public class Startup
{
public static string ConnectionString { get; private set; }
public IConfigurationRoot Configuration { get; set; }
public Startup(IHostingEnvironment _environment)
{
Configuration = new ConfigurationBuilder()
.SetBasePath(_environment.ContentRootPath)
.AddJsonFile("appsettings.json")
.Build();
}
在“配置-方法”中,按照以下方式进行。
using (var context = new MyContext())
{
context.Database.EnsureCreated();
}
在我的上下文类中,我有以下代码。
public class MyContext : DbContext
{
public MyContext()
{
}
public static string GetConnectionString()
{
return Startup.ConnectionString;
}
protected override void OnConfiguring(DbContextOptionsBuilder _builder)
{
_builder.UseSqlServer(GetConnectionString());
}
现在,当我启动应用程序时,在OnConfiguring方法中会出现连接字符串为空的错误。
我的appsettings.json文件如下:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"Connnectionstrings": {
"MyConnection": "server=.;database=MyDatabase;trusted_connection=true;MultipleActiveResultSets=True"
},
}