在.NET Core 2.2中找不到Microsoft.Extensions.EntityFrameworkCore命名空间

问题描述 投票:1回答:1

我正在阅读“Pro ASP.NET Core MVC 2”这本书并按照他的样本,并且已经达到了他引入EF Core的程度。

他说要在.csproj文件中添加以下内容......

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" 
                        Version="2.0.0" />

...然后将以下内容添加到ConfigureServices中的Startup.cs方法中...

services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(
        Configuration["Data:SportStoreProducts:ConnectionString"]));

问题是,当我将行添加到我的.csproj文件时,我在输出窗口中收到一条消息说...

C:\ Program Files \ dotnet \ sdk \ 2.2.104 \ Sdks \ Microsoft.NET.Sdk \ targets \ Microsoft.NET.ObsoleteReferences.targets(33,5):警告NETSDK1059:工具'Microsoft.EntityFrameworkCore.Tools.DotNet '现在包含在.NET Core SDK中。有关解决此警告的信息,请访问(https://aka.ms/dotnetclitools-in-box)。

好的,所以我再次从.csproj文件中删除了该行,并在Startup.cs文件中出现了编译器错误:

找不到类型ApplicationDbContext

我为命名空间Microsoft.Extensions.EntityFrameworkCore添加了一个using,但是这导致编译器错误,说它无法找到。我接受了这个提议(我认为是R#)来搜索Nuget,但它并没有提出任何建议

任何想法?除了降级到2.0,我不知道如何继续。

更新好的,所以我很蠢。我在床上读了这本书,然后第二天尝试做了示例代码,并且认为我知道了内容,在构建项目时浏览它。我一定错过了他展示变化的两个代码片段。我的错,不是书的。

c# asp.net-core entity-framework-core
1个回答
3
投票

到目前为止,ASP.NET核心书的坏处是,它们很快就会过时。

This page解释说<DotNetCliToolReference>命令的dotnet ef引用现在是SDK的一部分,因此不再需要它们。

至于无法找到类ApplicationDbContext,那是因为使用的项目模板没有使用个人用户帐户的ASP.NET核心标识,并且该书没有解释该类需要手动创建或者您没有关注彻底。您有两种方法可以解决此问题:

  • 使用ASP.NET Core Identity重新创建项目。步骤here,或
  • 创建那个就是这样的类: public class ApplicationDbContext : IdentityDbContext<ApplicationUser> { } 但请注意,如果本书未显示此内容,则必须安装一系列ASP.NET核心标识包,实体框架核心包,在Startup类中配置它们并创建ApplicationUser类,如果我是什么都不缺。相当多的繁琐工作。
© www.soinside.com 2019 - 2024. All rights reserved.