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

Max*_*mme 79 entity-framework-core asp.net-core

我是EF核心的新手,我正试图让它与我的asp.net核心项目一起工作.

startup.cs在尝试配置dbcontext以使用来自config的连接字符串时,我得到了上述错误.我正在关注本教程:https://docs.microsoft.com/en-us/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));
        }
Run Code Online (Sandbox Code Playgroud)

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");
        }
Run Code Online (Sandbox Code Playgroud)

我在网上的所有研究都指向缺少参考文献,但我似乎无法找出我缺少哪一个(见图).引用

任何帮助将不胜感激,

谢谢

Win*_*Win 191

我们安装了Microsoft.EntityFrameworkCore.SqlServer NuGet Package.

Microsoft.EntityFrameworkCore.SqlServer

PM > Install-Package Microsoft.EntityFrameworkCore.SqlServer
Run Code Online (Sandbox Code Playgroud)

然后,

   services.AddDbContext<AspDbContext>(options =>
       options.UseSqlServer(config.GetConnectionString("optimumDB")));
Run Code Online (Sandbox Code Playgroud)

  • 这个答案应该标记为正确答案而不是其他答案,原因是UseSqlServer方法来自这个包,而不是其他包. (6认同)
  • 感谢您的回答,但我已经这样做了。我开始怀疑我的原始项目中有些东西被破坏了。我会试着看看我是否可以从一个新项目中重现...... (4认同)

Vic*_*uak 61

加入 using Microsoft.EntityFrameworkCore;

为我手动解决了这个问题

发现在这里

  • 这就是答案. (3认同)
  • 是的,但我发现 dotnetcore 3.1 需要 Microsoft.EntityFrameworkCore.SqlServer 包。在此之前,似乎仅 Microsoft.EntityFrameworkCore 就足够了。 (3认同)

小智 24

EntityFramework UseSqlServer 解决

安装包 Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore 安装包 Microsoft.EntityFrameworkCore.SqlServer


Pha*_*i K 23

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

Microsoft.EntityFrameworkCore.SqlServer

安装包Microsoft.EntityFrameworkCore.SqlServer


bri*_*lam 11

这是项目系统中的一个已知问题。参见dotnet / project-system#1741

  • 这不是正确的答案,请按照下一个答案中的建议安装 Microsoft.EntityFrameworkCore.SqlServer NuGet 包,它将解决问题。 (99认同)

小智 10

包裹丢失。打开包管理器控制台并执行以下代码:

Install-Package Microsoft.EntityFrameworkCore.SqlServer 
Run Code Online (Sandbox Code Playgroud)


Kri*_*hna 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


小智 7

您的解决方案效果很好。

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

 services.AddDbContext<PaymentDetailContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("DevConnection")));
Run Code Online (Sandbox Code Playgroud)

UseSqlServer 无法识别所以我做了这个 Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 3.1.5

& 使用 Microsoft.EntityFrameworkCore;

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


小智 7

从 Nuget 安装以下软件包:-

  1. Microsoft.EntityFrameworkCore
  2. Microsoft.EntityFrameworkCore.Sqlite.Core


And*_*w S 6

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

Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design
Run Code Online (Sandbox Code Playgroud)

Microsoft.EntityFrameworkCore.SqlServer 没有直接安装在我的项目中,但 .Design 包无论如何都会作为先决条件安装它。

  • 截至 2018 年 2 月 5 日,您仍需要添加 Microsoft.EntityFrameworkCore.SqlServer.Design 包。这是使用 ASP.NET Core 2.0.1 Web 项目观察到的。 (3认同)

Bug*_*aya 6

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


Bru*_*ira 5

请按照以下步骤操作。

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

dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Run Code Online (Sandbox Code Playgroud)

导入实体框架核心:

using Microsoft.EntityFrameworkCore;
Run Code Online (Sandbox Code Playgroud)

并配置您的DbContext:

var connectionString = Configuration.GetConnectionString("myDb");
services.AddDbContext<MyDbContext>(options => 
    options.UseSqlServer(connectionString)
);
Run Code Online (Sandbox Code Playgroud)

  • 手动添加“using”语句的解决方案的这一部分对我有用 - 似乎我的编辑器没有检测到程序集中的包 (2认同)

小智 5

就我而言:- 我已点击以下命令,问题已解决。 命令

安装包 Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1