options.UseSqlServer在startup.cs中返回错误

时间:2018-07-24 16:03:59

标签: asp.net-core asp.net-core-mvc entity-framework-core

我正在使用asp.net核心开发一个测试项目。 为了连接数据库,我使用实体框架。 我将appsetings.json文件添加到项目中,并如下更改连接字符串:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=.\\mihanrayan;Initial Catalog=SportsStore;User = sa; Password = 123456"
  }
}

sql版本是:mssql 2008 r2

在startup.cs类中,我在下面添加代码:

public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();

            services.AddDbContext<ApplicationDbContext>(options =>
               options.UseSqlServer(
               Configuration["Data:SportStoreProducts:ConnectionString"]));
            services.AddTransient<IProductRepository, EFProductRepository>();

        }

但是

options.UseSqlServer(
               Configuration["Data:SportStoreProducts:ConnectionString"]));

返回此错误:

  

类型为“ System.ArgumentNullException”的异常发生在   Microsoft.EntityFrameworkCore.SqlServer.dll,但未在中处理   用户代码

其他信息:值不能为空。

2 个答案:

答案 0 :(得分:1)

Configuration["Data:SportStoreProducts:ConnectionString"])返回null。

"Data:SportStoreProducts:ConnectionString"

应该是

"ConnectionStrings:Defaultconnection"

答案 1 :(得分:1)

应如下图所示:

 services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));