我正在阅读“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,我不知道如何继续。
更新好的,所以我很蠢。我在床上读了这本书,然后第二天尝试做了示例代码,并且认为我知道了内容,在构建项目时浏览它。我一定错过了他展示变化的两个代码片段。我的错,不是书的。
到目前为止,ASP.NET核心书的坏处是,它们很快就会过时。
This page解释说<DotNetCliToolReference>
命令的dotnet ef
引用现在是SDK的一部分,因此不再需要它们。
至于无法找到类ApplicationDbContext
,那是因为使用的项目模板没有使用个人用户帐户的ASP.NET核心标识,并且该书没有解释该类需要手动创建或者您没有关注彻底。您有两种方法可以解决此问题:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
}
但请注意,如果本书未显示此内容,则必须安装一系列ASP.NET核心标识包,实体框架核心包,在Startup类中配置它们并创建ApplicationUser类,如果我是什么都不缺。相当多的繁琐工作。