我想将我的 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"];