我有一个使用数据库优先构建的网站,现在想在Mac上继续开发。通常我会在Visual Studio的控制台包管理器中运行Scaffold-dbContext。但是Mac版本没有这个功能,我尝试在终端运行,但显然不起作用。是否可能运行此命令,或者我需要继续在Windows上进行开发?
我有一个使用数据库优先构建的网站,现在想在Mac上继续开发。通常我会在Visual Studio的控制台包管理器中运行Scaffold-dbContext。但是Mac版本没有这个功能,我尝试在终端运行,但显然不起作用。是否可能运行此命令,或者我需要继续在Windows上进行开发?
以下是在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
dotnet ef
现在是一个单独的工具,名为 dotnet-ef
。此外,在脚手架命令中,关闭引号和 Microsoft.EntityFrameworkCore.SqlServer
之间应该有一个空格。 - KenDdotnet tool install --global dotnet-ef
后,上述命令对我有效... 我已经安装了它... 但是直到加上 --global 标志才能运行。 - Wahab Khan Jadon完成一些必要的步骤后,您可以从终端运行以下命令,详见此处:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
</ItemGroup>
dotnet add package Microsoft.EntityFrameworkCore.Design
3.执行
dotnet restore
现在,您应该能够使用以下命令生成脚手架:
dotnet ef dbcontext scaffold --help
在我苦苦挣扎一段时间后,我想发表我的解决方案。必须将模式字符串分成多个--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]
如果你安装了EntityFrameworkCore,即使使用.NET Core 3.0.0版本,你仍需要运行以下命令:
dotnet add package Microsoft.EntityFrameworkCore.SqlServer