在 Mac M1 计算机上 - 无法在 Asp.Net Core 3.1 中运行 EF core 迁移添加、更新

scy*_*hia 5 c# macos entity-framework asp.net-core

我最近有了一台 Mac M1,我必须使用 EF 和 SQL Server 在 Asp.net Core 上构建基于微服务的 Web API 应用程序。

我通过 NuGet Package 成功添加了 EntityFrameworkCore(5.0.11)。我的 Mac 上的 sdk 和运行时安装详细信息是:

安装的.NET SDK:
- 6.0.101
安装的.NET运行时:
- 微软.AspNetCore.App 6.0.1
- 微软.NETCore.App 6.0.1

首先,我无法在 Mac 上安装 SQL Server 2019,但经过搜索后,我找到了一个解决方案,通过在 Docker 上安装 SQL Edge 并连接到 Azure Data Studio,它工作正常。

现在的问题是我无法运行 EFcore 迁移添加初始、通过实体框架更新数据库。我到处搜索,但每当我执行这些命令时,我都会收到以下错误:

构建开始...构建成功。无法找到任何
兼容框架版本框架'Microsoft.AspNetCore.App',
未找到版本“3.1.0”(arm64)。
 - 发现以下框架:6.0.1
通过安装指定框架即可解决问题
和/或 SDK。

指定的框架可以在以下位置找到:
 - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.AspNetCore.App&framework_version=3.1.0&arch=arm64&rid=osx.12-arm64。

我确实安装了上面的框架,但那是x64。而且 EF 命令仍然不起作用,我无法更新数据库。有什么解决办法吗?EFCore 可以在 Mac M1 机器上运行吗?

MiD*_*Daa 6

原因是ef工具暂时无法找到正确的arch。解决方法是强制 ef 工具使用计算机上找到的最新运行时。

export DOTNET_ROLL_FORWARD=LatestMajor
Run Code Online (Sandbox Code Playgroud)

导出上述环境变量并dotnet ef xxx再次运行。


Rez*_*eza 5

更新

这永久解决了该问题:

dotnet tool uninstall dotnet-ef -g
dotnet tool install dotnet-ef -a arm64 -g
Run Code Online (Sandbox Code Playgroud)

您也可以在本地安装EF工具

CD 到您的源目录并执行以下操作:

dotnet new tool-manifest
dotnet tool install  dotnet-ef
Run Code Online (Sandbox Code Playgroud)

这样,它就可以与.Net 5/6 arm64配合使用。

arm64 版本安装程序中存在一个引用 x64 版本 EF Core 的错误。


小智 0

尝试从此链接手动安装正确的 SDK 版本。