简体   繁体   English

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

[英]ASP.NET core Entity Framework null value connection string

I want to connect my api to a SQL Server database. 我想将我的api连接到SQL Server数据库。 I am getting a null connection string value in my startup class. 我在启动类中得到一个空的连接字符串值。 I totally don't know what I am doing wrong. 我完全不知道我在做什么错。 Could you please check and let me know what should I correct? 您能否检查一下,让我知道我该如何纠正? Thank you in advance. 先感谢您。

Startup.cs Startup.cs

var connectionSettings = Configuration.GetSection("Connection").Get<ConnectionSettings>();

services.AddDbContextPool<Context>(
      options => options
            .UseSqlServer(connectionSettings.ConnectionString));

My appsettings.json connection is below: 我的appsettings.json连接如下:

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

In Program.cs (main class): Program.cs (主类)中:

var db = services.GetService<Context>();

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

    var dt = services.GetService<DefaultTriggers>();
}

And my Context.cs : 还有我的Context.cs

var connectionSettings = config.GetSection("Connection").Get<ConnectionSettings>();

var optionsBuilder = new DbContextOptionsBuilder<Context>();
optionsBuilder.UseSqlServer(connectionSettings.ConnectionString);

return new Context(optionsBuilder.Options);

ConnectionSettings.cs ConnectionSettings.cs

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

You either have to change your settings so that you have a single connection object (note that I've removed the [ array ] : 您要么必须更改设置,以便拥有一个连接对象(请注意,我已经删除了[ array ]

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

Or you need to instruct the configuration object to load an array of ConnectionSettings : 或者您需要指示配置对象加载ConnectionSettings的数组:

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

您可以简化获取连接字符串的方式,如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 我的 Entity Framework Core 和 ASP.NET Core MVC 应用程序连接字符串不会自动更新 - My Entity Framework Core & ASP.NET Core MVC app connection string doesn't update automatically 对ASP.NET Core上的Entity Framework使用其他连接提供程序 - Using a different connection provider for Entity Framework on ASP.NET Core 使用带有实体框架和依赖注入的 Asp.Net Core 动态更改控制器中的连接字符串 - Dynamically change connection string in a controller with Asp.Net Core with Entity Framework and Dependency Injection 具有实体框架的ASP.NET Core 2,在应用程序配置文件中找不到名为“ ####”的连接字符串 - ASP.NET Core 2 with Entity Framework, showing no connection string named '####' could be found in the application config file 使用实体框架在ASP.net中动态更改连接字符串 - Change connection string dynamically in ASP.net using Entity Framework Azure DB 连接字符串是 null 与 ASP.NET 核心应用程序 - Azure DB connection string is null with an ASP.NET Core app 实体框架 6.3 与 ASP.NET 核心 3 - Entity Framework 6.3 with ASP.NET Core 3 在asp.net核心(Entity Framework)中播种和初始化数据库时,如何解决“空异常” - How to fix “Null exception” when seeding and initialising the database in asp.net core (Entity Framework) asp.net核心mvc连接字符串 - asp.net core mvc connection string ASP.NET Core MacOS连接字符串 - ASP.NET Core MacOS Connection string
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM