C# 值不能为null。参数名称connectionString

C# 值不能为null。参数名称connectionString,c#,entity-framework,asp.net-core,C#,Entity Framework,Asp.net Core,大家好,我在将数据保存到数据库时遇到问题。我正在使用EF和.netcore。我已经在下面提供了我的示例代码: 这里到底出了什么问题?我在ConfigureServices中为MyContext提供了services.AddDbContext public class MyContext: DbContext { private IConfigurationRoot _config; public MyContext(IConfigurationRoot config)

大家好,我在将数据保存到数据库时遇到问题。我正在使用
EF
.netcore
。我已经在下面提供了我的示例代码:

这里到底出了什么问题?我在
ConfigureServices
中为MyContext提供了
services.AddDbContext

public class MyContext: DbContext
{
    private IConfigurationRoot _config;

    public MyContext(IConfigurationRoot config)
    {
       this._config = config;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        base.OnConfiguring(optionsBuilder);
        optionsBuilder.UseSqlServer(_config["Data:ConnectionString"]);
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        ...
    }
}
appsettings.json

{
  "Data": {
    "ConnectionString": "Data Source=MyDataSource;Initial Catalog=MyCatalog;Trusted_Connection=True"},
另一类:

public class AnotherClass
{ 
     private MyContext mycontext;
     private IConfigurationRoot configurationRoot;

     public AnotherClass()
     { 
        var builder = new ConfigurationBuilder();
        configurationRoot = builder.Build();
        mycontext = new MyContext(configurationRoot);
     }

     public MyMethod()
     {
        try
        {
            //object to be saved using EF
            var saveObj = new SaveObj()
            {
             //pretend to have initialize some object here to save
            };

            mycontext.SaveObj.Add(saveObj);
            mycontext.SaveChanges();
        }
        catch(Exception e)
        {
           //Throws an exception. Value cannot be null. Parameter name: connectionString
        }
    }
}
看看这个:

我认为您的appsettings.json应该如下所示:

{
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=MyDataSource;Initial Catalog=MyCatalog;Trusted_Connection=True"
  }
}
跳过“数据”部分