实体框架核心:DbContextOptionsBuilder不包含“ usesqlserver”的定义,也不包含扩展方法“ usesqlserver”


150

我是EF Core的新手,我正尝试使其与我的ASP.NET Core项目一起使用。

startup.cs在尝试配置时DbContext使用config中的连接字符串时遇到上述错误。我正在关注本教程:https : //docs.microsoft.com/zh-cn/aspnet/core/data/ef-mvc/intro

有问题的代码startup.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.SpaServices.Webpack;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.EntityFrameworkCore;
using tracV2.models;
using tracV2.data;

namespace tracV2
{
    public class Startup
    {
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            // Add framework services.
            services.AddMvc();

            services.AddSingleton<IConfiguration>(Configuration);

            string conn = Configuration.GetConnectionString("optimumDB");

            services.AddDbContext<tracContext>(options => options.usesqlserver(conn));
        }

UseSqlServer如果将方法直接放在上下文中,则可以识别该方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;

namespace tracV2.data
{
    public class tracContext : DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer("myrealconnectionstring");
        }

我在网上进行的所有研究都指向缺少参考文献,但我似乎无法找出我缺少的参考文献(参见图片)。


同样,Intellisense也找不到该方法。
Maxime Laflamme

Answers:



351

首先,我们安装Microsoft.EntityFrameworkCore.SqlServer NuGet包:

PM > Install-Package Microsoft.EntityFrameworkCore.SqlServer

然后,在导入名称空间后

using Microsoft.EntityFrameworkCore;

我们添加数据库上下文:

services.AddDbContext<AspDbContext>(options =>
    options.UseSqlServer(config.GetConnectionString("optimumDB")));

3
感谢您的回答,但我已经做到了。我开始怀疑我的原始项目中有什么损坏。我将尝试看看我是否可以从一个新项目中复制出来……
Maxime Laflamme

10
此答案应标记为正确答案,而不是其他答案,原因是UseSqlServer方法来自此程序包而不是其他程序包。
H35am

107

using Microsoft.EntityFrameworkCore;

手动为我解决问题

在这里发现

编辑...

对于dotnet core 3.1 add

Microsoft.EntityFrameworkCore.SqlServer


5
这就是答案。
smulholland2

为我修复它!不知何故不在建议列表ctrl +中。
罗恩·斯普林特

在.net Core 2.2中为我在2019年修复了此问题
lucamuh

1
是的,但是我发现dotnetcore 3.1需要Microsoft.EntityFrameworkCore.SqlServer程序包。在此之前,看来仅使用Microsoft.EntityFrameworkCore就足够了。
杰里米·雷·布朗

31

在NuGet软件包下面安装将解决您的问题

Microsoft.EntityFrameworkCore.SqlServer

安装包Microsoft.EntityFrameworkCore.SqlServer


1
添加更多有关此单行命令将如何解决op问题的解释。具体来说,在这里您要处理一个软件包,因此需要解释该软件包的工作方式。
Parth Pandya

Microsoft.EntityFrameworkCore.SqlServer包中提供了“ DbContextOptionsBuilder.UseSqlServer”,因此需要添加它的引用以解决生成问题。
Phani K '18 -10-17

9

包裹丢失。打开Package Manager控制台并执行以下代码:

Install-Package Microsoft.EntityFrameworkCore.SqlServer 

9

请遵循以下步骤。

为实体框架核心安装实体框架核心设计和SQL Server数据库提供程序:

dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer

导入实体框架核心:

using Microsoft.EntityFrameworkCore;

并配置您的DbContext:

var connectionString = Configuration.GetConnectionString("myDb");
services.AddDbContext<MyDbContext>(options => 
    options.UseSqlServer(connectionString)
);

7

我正在使用Visual Studio Code。

1)尝试通过指定版本号来安装软件包“ Microsoft.EntityFrameworkCore.SqlServer”。

VS代码

'dotnet添加软件包Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1'

视觉工作室:-

'安装软件包Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1'

请参考链接“ 包'Microsoft.EntityFrameworkCore.SqlServer'与项目中的'所有'框架不兼容”

2)然后使用Microsoft.EntityFrameworkCore添加名称空间' 在Startup.cs文件中手动添加。

请参阅下面的链接 https://github.com/aspnet/EntityFramework/issues/7891

3)如果您遇到“ Microsoft.EntityFrameworkCore.SqlServer.Design”的任何依赖问题,例如“包' Microsoft.EntityFrameworkCore.Design”与项目中的所有”框架都不兼容,我们需要运行以下命令,

VS代码:-

dotnet添加软件包Microsoft.EntityFrameworkCore.Design -v 1.1

视觉工作室

安装包Microsoft.EntityFrameworkCore.Design -v 1.1


1
这实际上有效。这是对该问题的最佳答案。感谢@克里希纳
penderi

6

项目-> ManageNugetPackages->浏览->搜索“ Microsoft.EntityFrameworkCore.SqlServer”并安装或更新。


4

如Win的最高评分答案所述,您可能需要安装Microsoft.EntityFrameworkCore.SqlServer NuGet软件包,但请注意,此问题使用的是asp.net核心mvc。在最新的ASP.NET Core 2.1中,MS包含了一个称为Microsoft.AspNetCore.App的元包。

https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-2.2

如果在解决方案资源管理器中右键单击ASP.NET Core MVC项目并选择,则可以看到对其的引用。 Edit Project File

如果ASP.NET Core Webapps使用using语句,则应该看到此元包。

<PackageReference Include="Microsoft.AspNetCore.App" />

此metapackage中包含Microsoft.EntityFrameworkCore.SqlServer。因此,在您的Startup.cs中,您可能只需要添加:

using Microsoft.EntityFrameworkCore;


3

我相信可以通过添加对Microsoft.EntityFrameworkCore.SqlServer.Design的项目引用来解决

Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

Microsoft.EntityFrameworkCore.SqlServer并未直接安装在我的项目中,但.Design软件包仍将以必备条件安装它。


安装不必要的软件包会导致需要的项目成为传递依赖项,这并不是解决该问题的方法。
Smit

您认为该软件包是不必要的,但是当我遇到完全相同的问题时,它就修复了我的项目。
安德鲁·S

该软件包对于当前问题是不必要的。可能需要针对其他问题,但不是此问题。
Smit

从今天(7月27日)开始,您可以仅安装Microsoft.EntityFrameworkCore.SqlServer软件包,它将解决此问题
danfer '17

3
截至2018年2月5日,您仍然需要添加Microsoft.EntityFrameworkCore.SqlServer.Design程序包。这是使用ASP.NET Core 2.0.1 Web项目观察到的。
罗斯

3

对我来说,Visual Studio Code发生了这个问题,我可以通过两个步骤解决:

  1. 手动添加 using Microsoft.EntityFrameworkCore;
  2. dotnet build在终端中运行。

3

在Visual Studio中,检查NuGet软件包管理器=>管理解决方案的软件包,检查所有这些软件包(是否已安装在解决方案中),如下所示:

  1. EntityFrameworkCore
  2. Microsoft.EntityFrameworkCore
  3. Microsoft.EntityFrameworkCore.InMemory
  4. Microsoft.EntityFrameworkCore.Relational
  5. Microsoft.EntityFrameworkCore.Sqlite.Core
  6. Microsoft.EntityFrameworkCore.SqlServer
  7. Microsoft.EntityFrameworkCore.Tools

检查以上所有软件包后,我解决了相同的问题。



3

首先添加 Install-Package Microsoft.EntityFrameworkCore.SqlServer

接下来在您的.cs文件中添加 using Microsoft.EntityFrameworkCore;

最终将其添加到您的核心 Startup.cs

  public void ConfigureServices(IServiceCollection services)
        {
            services.AddEntityFrameworkSqlServer().AddDbContext<ApplicationContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));
        }

2

如果在Sqlite的情况下遇到此问题,则

。我认为这是Sqlite版本的问题,当我使用此版本的SqLite时也遇到了相同的问题

版本2.2.4

在此处输入图片说明

这里 检查版本后在此处输入图片说明我更改了版本,然后就可以了。

在此处输入图片说明

使用后没有错误

版本2.1.2

在此处输入图片说明


1

我通过以下方法解决了这个问题:

添加SqlServerDbContextOptionsExtensions到有问题的课程中SqlServerDbContextOptionsExtensions

这可以解决此问题,默认情况下必须缺少一些参考。


1

对于仍然存在此问题的任何人:使用NuGet进行安装:Microsoft.EntityFrameworkCore.Proxies

此问题与将城堡代理与EFCore一起使用有关。


1

哇,答案如此之多,却没有人提到这个Microsoft.EntityFrameworkCore.InMemory包!

添加对该程序包的引用: <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.2" />您应该一切顺利。


1

当我移至Microsoft.EntityFrameworkCore.SqlServer v3.0.0和Microsoft.EntityFrameworkCore.Tools v3.0.0 时遇到了这个麻烦

当我在两个库上都改回v2.2.6时,错误消失了。这不是解决方案,而是解决方法,但是可以解决问题,直到问题解决为止。


1

解决此问题的简便方法

错误信息:
在此处输入图片说明

解决方案:
使用NuGet安装“ microsoft.entityframeworkcore.sqlserver”
在此处输入图片说明

固定的:
在此处输入图片说明

PS:确保在“使用Microsoft.EntityFrameworkCore;”内容上使用EF。 在此处输入图片说明



0

我遇到了这个问题,似乎我没有添加所需的NuGet软件包,尽管我认为我已经这样做了,但请务必逐一检查。


0

当前正在使用Entity Framework Core 3.1.3。以上解决方案均未解决我的问题。

但是,在我的项目中安装软件包Microsoft.EntityFrameworkCore.Proxies解决了该问题。现在,在设置DBContext选项时,我可以访问UseLazyLoadingProxies()方法调用。

希望这对某人有帮助。请参阅以下文章:

EF核心中的延迟加载


0

安装包:

**Microsoft.EntityFrameworkCore.SqlServer**

然后添加您课程的顶部:

**Microsoft.EntityFrameworkCore;**

这对我有用


0

我不得不用线

 services.AddEntityFrameworkSqlite().AddDbContext<MovieContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));

在Startup.cs的ConfigureServices方法中


0

https://github.com/aspnet/Docs/tree/master/aspnetcore/tutorials/first-web-api/sample/TodoApi将以下代码复制到TodoApi.csproj中,这对我来说解决了类似的问题。

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>

</Project>

Microsoft.AspNetCore.All可能过多,但包含EntityFrameworkCore


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.