无法加载类型“Microsoft.EntityFrameworkCore.Infrastructure.DesignTimeProviderServicesAttribute”

Ter*_*Lin 6 entity-framework-core asp.net-core-mvc .net-core asp.net-core asp.net-core-2.0

我使用 Visual Studio for Mac,创建了一个 .net core web api 项目。csproj 文件是这样的:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
    <PackageReference Include="MySql.Data.EntityFrameworkCore" Version="8.0.9-dmr" />
    <PackageReference Include="MySql.Data.EntityFrameworkCore.Design" Version="8.0.9-dmr" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
  </ItemGroup>

</Project>
Run Code Online (Sandbox Code Playgroud)

当我使用以下命令从 MySQL 执行“dotnet ef dbcontext scaffold”到脚手架时:

dotnet ef dbcontext scaffold "server=[server];port=3306;user=[user];password=[password];database=[dbname]" MySql.Data.EntityFrameworkCore -o Models -c [contextname] -f -v
Run Code Online (Sandbox Code Playgroud)

该命令返回如下错误:

Could not load type 'Microsoft.EntityFrameworkCore.Infrastructure.DesignTimeProviderServicesAttribute' from assembly 'Microsoft.EntityFrameworkCore, Version=2.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
Run Code Online (Sandbox Code Playgroud)

我检查了 Microsoft.EntityFrameworkCore 包。确实,该包中没有基础结构命名空间。但是在网上搜索,我发现其他人可以通过这样的设置成功搭建脚手架。我做错了什么吗?如何正确搭建脚手架?

谢谢你们。

Raj*_*j K 5

你应该Microsoft.EntityFrameworkCore.SqlServer从 NuGet 包中添加包,这对我有用。希望,这也适用于您。