【发布时间】:2018-11-18 21:29:06
【问题描述】:
我正在尝试使用 EF 核心 2.1 设置一个类库项目,并从 .NET 核心 api 项目中使用这个类库。当我尝试将我的架构逆向工程为 dbcontext 时,我收到一条错误消息,抱怨缺少 EF 命令。
类库csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.0" />
</ItemGroup>
</Project>
donet 命令
dotnet ef dbcontext scaffold "Server=.;Database=MyDb;user id=my-user;password=my-pwd;" Microsoft.EntityFrameworkCore.SqlServer -c LastMileContext -o Data
错误:
No executable found matching command "dotnet-ef"
因此,在阅读了一些其他主题之后,我将我的 csproj 文件更改为在 ItemGroup 部分中的样子
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.0" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
现在 EF 命令运行,我得到了我的实体类。我的问题是为什么我还必须手动向 csproj 文件添加一些内容?难道没有别的办法吗?是推荐的方式吗?好像我错过了一个 dotnet 命令步骤或其他什么?
另外,看起来我不是唯一遇到这些问题的人 https://fpnotebook.wordpress.com/2017/11/12/solution-entity-framework-core-and-net-core-class-libraries-2-0/
【问题讨论】: