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