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

C# AddDbContext在.NET Core中的IServiceCollection中不可用,c#,.net,postgresql,.net-core,visual-studio-2017,C#,.net,Postgresql,.net Core,Visual Studio 2017,我在Visual Studio 2017中有.NET Core 2项目。我正在尝试添加(Postgresql)数据库连接。下面是一个代码: public void配置服务(IServiceCollection服务) { services.AddDbContext(选项=> options.UseNpgsql(Configuration.GetConnectionString(“DefaultConnection”)); //添加框架服务。 services.AddMvc(); } 但编译器会抱

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

public void配置服务(IServiceCollection服务)
{
services.AddDbContext(选项=>
options.UseNpgsql(Configuration.GetConnectionString(“DefaultConnection”));
//添加框架服务。
services.AddMvc();
}
但编译器会抱怨以下消息:

IServiceCollection不包含“AddDbContext”的定义 并且没有扩展方法“AddDbContext”接受 找不到类型“IServiceCollection”(是否缺少使用 指令或组件引用?)

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

包还原失败。正在回滚“MyProject”的包更改

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


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

您能这样尝试吗

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

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

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

使用Microsoft.Extensions.DependencyInjection添加解决了这个问题。

试试这个

services.AddDbContext(选项=>
选项。使用npgsql(Configuration.GetConnectionString(“DefaultConnection”))

例如,确保安装了正确版本的相关NuGet软件包

Microsoft.EntityFrameworkCore v3

并且正在使用正确的命名空间,例如

使用Microsoft.EntityFrameworkCore

使用Microsoft.Extensions.DependencyInjection


解决方案非常简单,您只需在正确的文件中安装microsoft.entityframeworkcore nuget软件包。安装完成后,您将看到intellisence help选项。

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

  • 我从Nuget galary安装了Microsoft.EntityFrameworkCore.Sqlite
  • 我将包安装在StartUp.cs文件所在的文件夹下
  • 使用Microsoft.EntityFrameworkCore在StartUP.cs内部推出

  • 这解决了我的问题。

    您的代码顶部是否有实体框架名称空间的适当using语句?@mjwills:它不是重复的。我添加了另一节解释AddEntityFrameworkNpgsql也不能被编译器识别。@calingasan:编译器并不是说缺少using语句。相反,唯一可用的建议是生成类。是的,错误消息表明缺少using语句。这似乎是多项目解决方案中可能发生的情况。请记住,如果您的startup.cs项目依赖于解决方案中的另一个项目(可能是EntityFrameworkCore库所在的位置),则必须首先编译依赖项,然后查看它是否正常。在任何情况下,您都需要在主项目startup.cs.Yes中放入using语句。有同样的信息。您可以删除答案。什么是ClassDbContextName?我还应该为它添加定义吗?ClasssDbContexName只是类的名称,但它引用数据库表等等。如果您选中此链接,您将看到一个示例。希望它对你有用:这应该是一个评论,而不是一个答案(来自评论)。tnx it提供了一个解决方案尽可能使用正确的拼写、标点符号和语法。