实体框架核心:DbContextOptionsBuilder不包含'usesqlserver'并且没有扩展方法'

我是新的EF核心,我试图让它与我的ASP工作。NET Core项目。

当我试图配置DbContext使用config中的连接字符串时,我在我的startup.cs中得到了上述错误。我遵循本教程

有问题的代码位于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");
}

我所有的在线研究都指向了缺失的参考资料,但我似乎找不到我缺失的是哪一个(见图片)。

306882 次浏览

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

PM > Install-Package Microsoft.EntityFrameworkCore.SqlServer

然后,在导入命名空间之后

using Microsoft.EntityFrameworkCore;

我们添加数据库上下文:

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

我相信这个问题可以通过在Microsoft.EntityFrameworkCore.SqlServer.Design中添加项目引用来解决

Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

sqlserver没有直接安装在我的项目中,但是. design包将作为先决条件安装它。

< p >添加 using Microsoft.EntityFrameworkCore; < / p >

手动解决了我的问题

发现这里 .

编辑……

为dotnet核心3.1添加

Microsoft.EntityFrameworkCore.SqlServer

我用的是Visual Studio Code。

1)尝试安装“Microsoft.EntityFrameworkCore”包。SqlServer',指定版本号。

< em > < / em > VS代码:

添加Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1

Visual Studio < em >: - < / em >

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

请参考链接'包& # 39;Microsoft.EntityFrameworkCore.SqlServer& # 39;与'all'项目中的框架'来完成此操作。

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

参考下面的链接 https://github.com/aspnet/EntityFramework/issues/7891 . < / p >

3)如果你对` Microsoft.EntityFrameworkCore.SqlServer.Design”有任何依赖问题,比如` Package ` Microsoft.EntityFrameworkCore。“设计”与项目中的“所有”框架不兼容",我们需要运行下面的命令,

< em > VS代码:< / em >

. net添加包Microsoft.EntityFrameworkCore.Design -v 1.1

Visual Studio < em > < / em >

安装包Microsoft.EntityFrameworkCore.Design -v 1.1

将以下代码复制到TodoApi中。https://github.com/aspnet/Docs/tree/master/aspnetcore/tutorials/first-web-api/sample/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>

all可能太多了,但它包含了EntityFrameworkCore

我简单地解决了这个问题:

SqlServerDbContextOptionsExtensions添加到问题类中 解决SqlServerDbContextOptionsExtensions < / p >

这修复了问题,必须在默认情况下缺少一些引用。

按照下面的步骤进行。

为实体框架核心安装实体框架核心设计和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)
);

对于asp.net核心版本2.1,请确保添加以下包来解决这个问题。(至少这修复了使用SQLite的问题)

dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Design
这里是使用实体框架核心的SQLite文档的参考。 https://learn.microsoft.com/en-us/ef/core/get-started/netcore/new-db-sqlite < / p >

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

Microsoft.EntityFrameworkCore.SqlServer

安装包Microsoft.EntityFrameworkCore.SqlServer

我只好打了电话

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

在Startup.cs中的ConfigureServices方法中

对于仍然有这个问题的人: 使用NuGet安装: Microsoft.EntityFrameworkCore.Proxies < / p >

这个问题与使用EFCore的Castle Proxy有关。

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

如果你在Sqlite的情况下面临这个问题,那么

< p >。 我认为这是Sqlite版本的问题,当我使用这个版本的SqLite

时,我也有同样的问题

2.2.4版本:

enter image description here

检查版本在这里 enter image description here后,我改变了版本,然后它工作。

enter image description here

使用后没有错误

2.1.2版本:

enter image description here

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

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

最后在你的core Startup.cs中添加这个

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

哇,这么多答案,却没有一个提到这个Microsoft.EntityFrameworkCore.InMemory包!

将引用添加到这个包中: <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="2.2.2" /> and you should good to go.

正如Win的高分答案所提到的,你可能需要安装Microsoft.EntityFrameworkCore.SqlServer NuGet包,但请注意,这个问题使用的是asp.net core mvc。在最新的ASP。在NET Core 2.1中,微软包含了一个叫做微软. aspnetcore . app的元包

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/metapackage-app?view=aspnetcore-2.2

如果右键单击ASP. xml,就可以看到对它的引用。在解决方案资源管理器中选择Edit Project File

如果ASP。NET core webapps using语句

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

Microsoft.EntityFrameworkCore.SqlServer包含在这个元包中。所以在你的Startup.cs中,你只需要添加:

using Microsoft.EntityFrameworkCore;

当我移动到Microsoft.EntityFrameworkCore.SqlServer v3.0.0和Microsoft.EntityFrameworkCore.Tools v3.0.0时,我遇到了这个问题

当我在两个库上都改回v2.2.6时,错误就消失了。这更像是一种变通方法而不是解决方案,但它会让你启动并运行,直到问题得到解决。

对我来说,这个问题发生在Visual Studio Code中,我能够通过2个步骤来修复:

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

包裹不见了。打开包管理器控制台,执行下面的代码:

Install-Package Microsoft.EntityFrameworkCore.SqlServer

我有这个问题,似乎我没有添加所需的NuGet包,虽然我认为我已经这样做了,一定要检查他们,一个接一个。

在Visual Studio中,检查NuGet Package Manager =>管理解决方案的包,检查所有这些包,不管你的解决方案中是否有安装,如下所示:

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

我解决了同样的问题后,检查所有上述软件包已安装。

目前正在使用实体框架核心3.1.3。以上的解决方案都不能解决我的问题。

但是,在我的项目上安装包microsoft . entityframeworkcore .代理解决了这个问题。现在我可以访问uselazyloadingagents()方法调用时设置我的DBContext选项。

希望这能帮助到一些人。请看下面的文章:

EF Core中的延迟加载

安装包,EntityFrameworkCore。:状态"置疑"

PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 3.1.3
< p > Nuget: https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer/ < / p >

解决这个问题的简单方法

< br > < p >错误信息: enter image description here < / p > < br > < p >解决方案: 安装“microsoft.entityframeworkcore”。使用NuGet
enter image description here < / p > < p >固定:< br > enter image description here < / p >

PS:确保你已经使用EF的内容"using Microsoft.EntityFrameworkCore;" enter image description here < / p >

安装包:

**Microsoft.EntityFrameworkCore.SqlServer**

然后加上你班级的顶部:

**Microsoft.EntityFrameworkCore;**

这对我来说很有效

我也有同样的问题,但问题在回去并修复DbContext错误的语法问题后消失了,例如它应该是ExampleDbContextClass: DbContext,而我在上下文类中错过了DbContext部分,在那里你定义了DbSet。此外,我验证了为了实现到SqlServer的连接需要以下依赖项。 <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.6" /> 此外,为安全起见,请确认您安装的版本小于项目的当前版本。例如,如果你的项目使用的是3.1,不要尝试使用更新的版本,比如3.1.9。

我也有同样的问题。我添加了以下内容。这对我很有用

Microsoft.EntityFrameworkCore.SqlServer

项目工作在DotNET核心3.1+或更高(未来)

添加这个包:

  1. NuGet: Microsoft.EntityFrameworkCore.Tools
  2. 项目配置(.csproj): <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.8">

你的解决方案很有效。

当我看到这个视频直到17分钟:https://www.youtube.com/watch?v=fom80TujpYQ 我在这里遇到了一个问题:

 services.AddDbContext<PaymentDetailContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DevConnection")));

UseSqlServer不识别,所以我这样做了 安装- package Microsoft.EntityFrameworkCore.SqlServer -Version 3.1.5

. exe < p >, 使用Microsoft.EntityFrameworkCore; < / p >

那我的问题就解决了。关于我:基本上我从一开始就是一个纯粹的PHP程序员,今天只有我开始了。net编码,感谢在。net中的良好社区

从Nuget安装以下包

  1. 微软。EntityFrameworkCore
  2. Microsoft.EntityFrameworkCore.Sqlite.Core

我在包管理器控制台中安装了这三个程序,它可以工作。

Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design -Version 3.1.4 Install-Package Microsoft.EntityFrameworkCore.Tools -Version 3.1.8 Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 3.1.8

我阅读并做了每一个答案的一切指示,我才发现我的问题是在我的DbContext上缺少构造函数

public Context(DbContextOptions<Context> options) : base(options) { }

我希望这篇文章能帮助那些和我面临同样问题的人。

在我的情况下:- 我已经点击了下面的命令,它已经解决了。 命令< / >强

安装- package Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1

我将SqlServerSqlite添加到我的项目中,同样的问题出现了。

对我来说,我之前安装了Microsoft.EntityFrameworkCore,它的版本是5.0.6。现在Microsoft.EntityFrameworkCore.SqlServer版本是5.0.7。安装后没有UserSqlServer方法。

1. 请尝试升级工具版本以保持一致

尝试在csproj中修改版本:

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.7">

或者打开NuGet来更新包。

2. 重新启动Visual Studio

如果它对你没有帮助,最重要的是重新启动VS

然后,一切都好了。

< >强引用 https://github.com/dotnet/efcore/issues/7891 < / p >

EntityFramework UseSqlServer Solved

< p >安装包Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore 安装包Microsoft.EntityFrameworkCore.SqlServer < / p >