EF核心MySQL数据库第一?

时间:2018-03-27 08:33:53

标签: mysql entity-framework entity-framework-core ef-core-2.0 db-first

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

我想使用EF Core,Database First。我知道Pomelo.EntityFrameworkCore.MySql包很受欢迎,但我看不到任何有关如何通过该包实现Db Context脚手架的信息。

我在跟instructions这里用MySql.Data.EntityFrameworkCore.Design取代Pomelo.EntityFrameworkCore.MySql但是当我在Package Manager控制台中运行以下命令时:

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

我刚收到错误:

  

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

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

screenshot of solution

3 个答案:

答案 0 :(得分:2)

.net core 3于2020年发布,许多事情发生了变化,这就是现在的工作方式:)

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

<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是需要安装的全局工具,reference

dotnet tool install --global dotnet-ef

然后运行此命令reference

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

答案 1 :(得分:1)

您需要在.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>

注意:我必须手动将DotNetCliToolReference添加到Microsoft.EntityFrameworkCore.Tools.DotNet(而不是Manage Nuget Packages中的Visual Studio视图)

答案 2 :(得分:-1)

通过从Tools和NuGet Package Manager菜单中选择Package Manager Console或Manage NuGet Packages for Solution来安装以下NuGet包:

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

Pomelo.EntityFrameworkCore.MySql版本2.0.1

安装上面的命令后,在Package Manager Console中运行以下命令:

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