ASP.NET 核心实体框架空值连接字符串



我想将我的 api 连接到 SQL Server 数据库。我在启动类中获取空连接字符串值。我完全不知道我做错了什么。你能检查一下,让我知道我应该纠正什么吗?提前谢谢你。

启动.cs

var connectionSettings = Configuration.GetSection("Connection").Get<ConnectionSettings>();
services.AddDbContextPool<Context>(
options => options
.UseSqlServer(connectionSettings.ConnectionString));

我的appsettings.json连接如下:

"Connection": [
{
"EFMode": "MSSQL",
"DatabaseName": "Shop",
"ConnectionString": "Server=(localdb)\mssqllocaldb;Database=Shop;Trusted_Connection=True,MultipleActiveResultSets=True"
}

Program.cs(主类(:

var db = services.GetService<Context>();
if (db != null)
{
var cs = services.GetService<ConnectionSettings>();
db.Database.Migrate();
var dt = services.GetService<DefaultTriggers>();
}

和我的Context.cs

var connectionSettings = config.GetSection("Connection").Get<ConnectionSettings>();
var optionsBuilder = new DbContextOptionsBuilder<Context>();
optionsBuilder.UseSqlServer(connectionSettings.ConnectionString);
return new Context(optionsBuilder.Options);

连接设置.cs

public class ConnectionSettings
{
public string ConnectionString { get; set; }
public string DatabaseName { get; set; }
}

您必须更改设置,以便拥有单个连接对象(请注意,我已经删除了[数组]

"Connection": {
"EFMode": "MSSQL",
"DatabaseName": "Shop",
"ConnectionString": "Server=(localdb)\mssqllocaldb;Database=Shop;Trusted_Connection=True,MultipleActiveResultSets=True"
}

或者你需要指示配置对象加载一个ConnectionSettings数组:

var connectionSettings = Configuration.GetSection("Connection").Get<ConnectionSettings[]>();
var shopConnection = connectionSettings.First(s => s.DatabaseName == "Shop");

您可以像这样简化获取连接字符串的过程:

var connectionString = config["Connection:ConnectionString"];

最新更新