4

我有一个位于 Amazon Cloud (RDS) 中的 MySQL 数据库。它是一个只有一张表的小型数据库。

我想使用 EF Core,数据库优先。我知道该Pomelo.EntityFrameworkCore.MySql包很受欢迎,但我看不到任何有关如何通过该包实现 Db 上下文脚手架的信息。

我按照此处的说明进行了替换MySql.Data.EntityFrameworkCore.DesignPomelo.EntityFrameworkCore.MySql但是当我在包管理器控制台中运行以下命令时:

Scaffold-DbContext "Server=my-db.rds.amazonaws.com;database=TestDb;uid=blah;pwd=blah;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -f

我刚得到错误:

无法解析指定的框架版本“2.0”

我错过了什么?这是我的虚拟解决方案的外观

解决方案截图

4

3 回答 3

3

您需要在.csproj. 当然,版本可能会有所不同。

<ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.0-preview2-final" />
    <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="2.0.1" />
    <PackageReference Include="Pomelo.EntityFrameworkCore.MySql.Design" Version="1.1.2" />
</ItemGroup>

<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.1.0-preview1-final" />
</ItemGroup>

注意:我必须手动添加DotNetCliToolReferenceMicrosoft.EntityFrameworkCore.Tools.DotNet不是通过Manage Nuget Packages视图中的Visual Studio

于 2018-04-13T18:48:55.733 回答
3

2020 年,.net core 3 发布了很多东西,这就是现在的工作:)

确保您拥有所有这些软件包

<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.1">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.1.1" />
    <PackageReference Include="Pomelo.EntityFrameworkCore.MySql.Design" Version="1.1.2" />
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.1" />

现在dotnet ef是需要安装的全局工具,参考

dotnet tool install --global dotnet-ef

然后运行这个命令,参考

dotnet ef dbcontext scaffold "Server=localhost;Database=ef;User=root;Password=123456;TreatTinyAsBoolean=true;" "Pomelo.EntityFrameworkCore.MySql"

对于不同路径中的脚手架,您可以使用 --output-dir

dotnet ef dbcontext scaffold server=localhost;port=3306;database=palle2patnam;uid=root;password=password" "Pomelo.EntityFrameworkCore.MySql" --output-dir Models

要强制从数据库中获取新字段,您可以添加 --force

dotnet ef dbcontext scaffold "server=localhost;port=3306;database=palle2patnam;uid=root;password=password" "Pomelo.EntityFrameworkCore.MySql" --output-dir Models --force
于 2020-02-19T06:26:41.890 回答
-1

通过从“工具”和“NuGet 包管理器”菜单中选择“包管理器控制台”或“管理解决方案的 NuGet 包”来安装以下 NuGet 包:

Microsoft.EntityFrameworkCore.Tools 2.0.1 版(适用于 EF Core 2.0)

Pomelo.EntityFrameworkCore.MySql 2.0.1 版

安装上述后,在包管理器控制台中运行以下命令:

Scaffold-DbContext "你的连接字符串在这里" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -f

于 2018-03-27T22:00:42.943 回答