AddDbContext在.NET Core中的IServiceCollection中不可用

时间:2017-07-11 10:37:03

标签: c# .net postgresql .net-core visual-studio-2017

我在Visual Studio 2017中有.NET Core 2项目。我正在尝试添加(Postgresql)数据库连接。这是一个代码:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext(options =>
        options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection")));

    // Add framework services.
    services.AddMvc();
}

但是编译器抱怨这条消息:

  

IServiceCollection不包含“AddDbContext”的定义   没有扩展方法'AddDbContext'接受第一个参数   类型'IServiceCollection'可以找到(你错过了使用   指令或程序集引用?)

我安装了NuGet包Npgsql。我还尝试安装NuGet包EntityFramework,但我收到错误:

包恢复失败。回滚“MyProject”的包更改。

这是我问题的根源吗?我应该安装其他一些库吗?

在这个question程序中使用了AddEntityFramework()和AddEntityFrameworkNpgsql(),但我的项目中的编译器也无法识别这两个程序。

7 个答案:

答案 0 :(得分:1)

我安装了Npgsql.EntityFrameworkCore.PostgreSQL并解决了我的问题。我还使用了Danijel的建议:

services.AddDbContext<ClassDbContextName>(options =>
            options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection")));

答案 1 :(得分:1)

确保以正确的版本安装了相关的NuGet软件包

  

Microsoft.EntityFrameworkCore v3

并使用正确的名称空间,例如

  

使用Microsoft.EntityFrameworkCore;

     

使用Microsoft.Extensions.DependencyInjection;

答案 2 :(得分:0)

使用Microsoft.Extensions.DependencyInjection添加为我解决了此问题。

答案 3 :(得分:0)

解决方案非常简单,您只需在正确的文件中安装 microsoft.entityframeworkcore nuget 包。然后安装后,智能帮助选项将对您可见。

答案 4 :(得分:0)

我在使用 Sqlite 时遇到了这个问题。

  1. 我从 Nuget galary 安装了 Microsoft.EntityFrameworkCore.Sqlite
  2. 我将软件包安装在 StartUp.cs 文件所在的文件夹下。
  3. StartUP.cs
  4. 中引入了使用 Microsoft.EntityFrameworkCore

这解决了我的问题。

答案 5 :(得分:-1)

我认为这对ansewr最好尝试

services.AddDbContext(options =>             options.UseNpgsql(Configuration.GetConnectionString(“ DefaultConnection”)))

答案 6 :(得分:-2)

请你试试这个

services.AddDbContext<ClassDbContextName>(options =>
        options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection")));