在Visual Studio for Mac上运行Scaffold-DbContext

13

我有一个使用数据库优先构建的网站,现在想在Mac上继续开发。通常我会在Visual Studio的控制台包管理器中运行Scaffold-dbContext。但是Mac版本没有这个功能,我尝试在终端运行,但显然不起作用。是否可能运行此命令,或者我需要继续在Windows上进行开发?


你解决了这个问题吗?我也遇到同样的问题。 - saZmer
不,我只是回到了在Windows上进行开发。 - Jhorra
我遇到了同样的问题。我正在使用High Sierra 10.13.5和VS Community 7.5.3(构建7)。我在.csproj中添加了以下条目:DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0"打开解决方案并还原NuGet包。但它没有添加到我的项目中,控制台无法输出任何内容。有什么想法吗? - Jean J. Michel
4个回答

19

以下是在Visual Studio Mac上为我工作的代码。

使用Visual Studio Mac编辑项目中的引用或将软件包添加到.csproj文件中,安装以下软件包。

Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
Microsoft.VisualStudio.Web.CodeGeneration.Design

或者使用终端导航到项目并使用以下命令 -

dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design

现在检查工具和EF是否已安装。导航到项目安装位置,并使用以下命令使用mac终端。它应该显示实体框架细节。

dotnet ef

现在脚手架化数据库上下文

dotnet ef dbcontext Scaffold "Server=<servername>,1433;Initial Catalog=<dbName>;Persist Security Info=False;User ID=<userID>;Password=<password>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"Microsoft.EntityFrameworkCore.SqlServer -o <directory name>

参考资料

https://learn.microsoft.com/zh-cn/ef/core/miscellaneous/cli/dotnet

https://learn.microsoft.com/zh-cn/ef/core/get-started/aspnetcore/existing-db

https://www.learnentityframeworkcore.com/walkthroughs/existing-database


我将此标记为答案。当我第一次提出问题时,这是不可能的,但随着更新到 .Net Core 2.0,这个答案提供了在 Mac 上执行此操作所需的所有必要信息和步骤。 - Jhorra
2
请参见 https://dev59.com/O1MI5IYBdhLWcg3wHHgz#57070108 - dotnet ef 现在是一个单独的工具,名为 dotnet-ef。此外,在脚手架命令中,关闭引号和 Microsoft.EntityFrameworkCore.SqlServer 之间应该有一个空格。 - KenD
1
在使用命令 dotnet tool install --global dotnet-ef 后,上述命令对我有效... 我已经安装了它... 但是直到加上 --global 标志才能运行。 - Wahab Khan Jadon
@WahabKhanJadon - 你说得对,这就是为什么答案不能被标记为正确。 - Alex Sham

7

完成一些必要的步骤后,您可以从终端运行以下命令,详见此处

  1. 您需要手动将以下内容添加到*.csproj文件中

<ItemGroup>
  <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>

  1. 执行

dotnet add package Microsoft.EntityFrameworkCore.Design

3.执行

dotnet restore

现在,您应该能够使用以下命令生成脚手架:

dotnet ef dbcontext scaffold --help


随着 .Net Core 2.0 的更新,这终于可以实现了。 - Jhorra

2

在我苦苦挣扎一段时间后,我想发表我的解决方案。必须将模式字符串分成多个--schema选项。

dotnet ef dbcontext scaffold "Server=<servername>,1433;Initial Catalog=<dbName>;Persist Security Info=False;User ID=<userID>;Password=<password>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" Microsoft.EntityFrameworkCore.SqlServer --context [context] -f --output-dir [dir] --schema [schema1] --schema [schema2]

0

如果你安装了EntityFrameworkCore,即使使用.NET Core 3.0.0版本,你仍需要运行以下命令:

dotnet add package Microsoft.EntityFrameworkCore.SqlServer


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接