我是新的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");
        }

我在网上的所有研究都指向了缺失的参考文献,但我似乎找不到我缺失的是哪一本(见图)。


首先,我们安装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包将作为先决条件安装它。


添加 使用Microsoft.EntityFrameworkCore;

手动解决了我的问题

在这里找到

编辑……

为dotnet核心3.1添加

Microsoft.EntityFrameworkCore.SqlServer


我用的是Visual Studio Code。

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

VS代码:

添加Microsoft.EntityFrameworkCore.SqlServer -v 1.1.1

Visual Studio: -

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

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

2)然后在Startup.cs文件中手动添加命名空间“using Microsoft.EntityFrameworkCore;”

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

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

VS代码:

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

Visual Studio

安装包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

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


按照下面的步骤进行。

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


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

Microsoft.EntityFrameworkCore.SqlServer

安装包Microsoft.EntityFrameworkCore.SqlServer


我只好打了电话

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

在Startup.cs中的ConfigureServices方法中


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

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


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


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

. 我认为这是Sqlite版本的问题,当我使用这个版本的Sqlite时,我有同样的问题

2.2.4版:

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

使用后没有错误

2.1.2版:


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

接下来使用Microsoft.EntityFrameworkCore添加到你的.cs文件中;

最后将其添加到你的核心Startup.cs中

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

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

将引用添加到这个包中: < PackageReference包括= " Microsoft.EntityFrameworkCore。InMemory" Version="2.2.2" />,你应该很好。


正如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,就可以看到对它的引用。在解决方案资源管理器中选择“编辑项目文件”

如果ASP。NET core webapps using语句

<包引用包括=“Microsoft.AspNetCore.App” />

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

使用Microsoft.EntityFrameworkCore;


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

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


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

使用Microsoft.EntityFrameworkCore手动添加; 在终端中运行dotnet构建。


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

Install-Package Microsoft.EntityFrameworkCore.SqlServer 

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


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

实体框架核心 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.InMemory Microsoft.EntityFrameworkCore.Relational Microsoft.EntityFrameworkCore.Sqlite.Core Microsoft.EntityFrameworkCore.SqlServer Microsoft.EntityFrameworkCore.Tools

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


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

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

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

EF核心的惰性加载


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

PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 3.1.3

掘金: https://www.nuget.org/packages/Microsoft.EntityFrameworkCore.SqlServer/


解决这个问题的简单方法

错误信息:

解决方案: 安装“microsoft.entityframeworkcore”。sqlserver"与NuGet

修复:

PS:确保你在“using Microsoft.EntityFrameworkCore;”内容上使用了EF。


安装包:

**Microsoft.EntityFrameworkCore.SqlServer**

然后加上你班级的顶部:

**Microsoft.EntityFrameworkCore;**

这对我来说很有效


I had same issue but problem went off after going back and fixing DbContext incorrect syntax issue such as it should have been ExampleDbContextClass: DbContext whereas I had missed DbContext part in Context Class where you define your DbSet. Also, I verified following dependencies are needed in order to achieve connection to SqlServer. <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.6" /> Also verify that Version you install is less than your project's current version to be on safe side. Such as if your project is using 3.1 do not try to use newer one which would be for example 3.1.9. I had issue with that too.


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

Microsoft.EntityFrameworkCore.SqlServer

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

添加这个包:

NuGet: Microsoft.EntityFrameworkCore.Tools 项目配置(.csproj): <PackageReference Include="Microsoft.EntityFrameworkCore. "工具3.1.8中“Version = >


你的解决方案很有效。

当我看到这个视频直到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

& 使用Microsoft.EntityFrameworkCore;

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


从Nuget安装以下包

微软。EntityFrameworkCore Microsoft.EntityFrameworkCore.Sqlite.Core


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

安装包microsoft . visualstudio . web . codegenerator . design -Version 3.1.4安装包Microsoft.EntityFrameworkCore.Tools -Version 3.1.8安装包Microsoft.EntityFrameworkCore.SqlServer -Version 3.1.8


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

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

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


就我而言:- 我已经点击了下面的命令,它已经解决了。 命令

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


我添加SqlServer和Sqlite到我的项目,同样的问题出现了。

对我来说,我安装了微软。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


EntityFramework UseSqlServer解决

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