EF Core MySQL 数据库优先?
EF Core MySQL Database First?
我在亚马逊云 (RDS) 中有一个 MySQL 数据库。这是一个只有一个 table.
的小型数据库
我想使用 EF Core,数据库优先。我知道 Pomelo.EntityFrameworkCore.MySql
包很受欢迎,但我看不到有关如何通过该包实现 Db 上下文脚手架的任何信息。
我在此处按照 instructions 将 MySql.Data.EntityFrameworkCore.Design
替换为 Pomelo.EntityFrameworkCore.MySql
但是当我 运行 在程序包管理器控制台中执行以下命令时:
Scaffold-DbContext "Server=my-db.rds.amazonaws.com;database=TestDb;uid=blah;pwd=blah;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -f
我刚收到错误:
The specified framework version '2.0' could not be parsed
我错过了什么?这是我的虚拟解决方案的样子
通过从“工具”中选择“包管理器控制台”或“管理解决方案的 NuGet 包”然后选择“NuGet 包管理器”菜单来安装以下 NuGet 包:
Microsoft.EntityFrameworkCore.Tools 版本 2.0.1(对于 EF Core 2.0)
Pomelo.EntityFrameworkCore.MySql 版本 2.0.1
安装完上述 运行 程序包管理器控制台中的以下命令:
Scaffold-DbContext "Your connection string here" Pomelo.EntityFrameworkCore.MySql -OutputDir 模型 -f
您需要在 .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
(不是通过 Visual Studio
中的 Manage Nuget Packages
视图)
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是一个需要安装的全局工具,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
我在亚马逊云 (RDS) 中有一个 MySQL 数据库。这是一个只有一个 table.
的小型数据库我想使用 EF Core,数据库优先。我知道 Pomelo.EntityFrameworkCore.MySql
包很受欢迎,但我看不到有关如何通过该包实现 Db 上下文脚手架的任何信息。
我在此处按照 instructions 将 MySql.Data.EntityFrameworkCore.Design
替换为 Pomelo.EntityFrameworkCore.MySql
但是当我 运行 在程序包管理器控制台中执行以下命令时:
Scaffold-DbContext "Server=my-db.rds.amazonaws.com;database=TestDb;uid=blah;pwd=blah;" Pomelo.EntityFrameworkCore.MySql -OutputDir Models -f
我刚收到错误:
The specified framework version '2.0' could not be parsed
我错过了什么?这是我的虚拟解决方案的样子
通过从“工具”中选择“包管理器控制台”或“管理解决方案的 NuGet 包”然后选择“NuGet 包管理器”菜单来安装以下 NuGet 包:
Microsoft.EntityFrameworkCore.Tools 版本 2.0.1(对于 EF Core 2.0)
Pomelo.EntityFrameworkCore.MySql 版本 2.0.1
安装完上述 运行 程序包管理器控制台中的以下命令:
Scaffold-DbContext "Your connection string here" Pomelo.EntityFrameworkCore.MySql -OutputDir 模型 -f
您需要在 .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
(不是通过 Visual Studio
中的 Manage Nuget Packages
视图)
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是一个需要安装的全局工具,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