启动项目“EFGetStartedUWP”是一个通用 Windows 平台应用程序。此版本的 Entity Framework Core 包管理器控制台工具不支持此类项目。有关将 EF Core Tools 与 UWP 项目结合使用的详细信息,请参阅https://go.microsoft.com/fwlink/?linkid=858496 https://go.microsoft.com/fwlink/?linkid=858496
为了学习,我尝试将 SQLite 数据库连接到基本的 UWP 应用程序,但是当我尝试迁移时。它只是不断给我上面的错误。我在互联网上搜索了很多,但没有得到合适的答案。 Microsoft 文档在这种情况下没有用处。我还安装了 Microsoft.EntityFrameworkCore.Sqlite 和 Microsoft.EntityFrameworkCore.Tools。
如果有人可以建议任何其他方式将 SQLite 数据库连接到 UWP,那也将非常有用,因为我对 C# 还很陌生,而且我有一个大学项目需要在 UWP 应用程序上完成。
我刚刚遇到了类似的问题,并且很幸运能够解决它。首先,我发现这些链接非常有用:Entity Framework Core 工具参考 - .NET Core CLI - 其他目标框架 https://learn.microsoft.com/en-us/ef/core/cli/dotnet#other-target-frameworks and 常用选项 https://learn.microsoft.com/en-us/ef/core/cli/dotnet#common-options.
就我而言,我的解决方案最终的配置如下:
- the 应用项目(通用 Windows)- 解决方案的启动项目,
- a 类库项目(.NET Standard 2.0) - 使用模型和上下文类,
- a 虚拟控制台应用程序项目(.NET 6.0) - 需要充当工具的启动项目。
考虑到(在撰写本文时)UWP 不支持 .NET 标准 2.1 https://learn.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-support。它支持 .NET Standard 2.0 从版本 10.0.16299 开始。这意味着(通用 Windows)应用项目无法引用 .NET Standard 2.1 项目(例如 .NET 5.0、.NET Core 3.0、Mono 6.4 等),因此类库项目不能是 .NET 2.1、.NET 5.0 等。反之则不然:.NET 5.0 或 .NET 6.0 项目可以引用 .NET Standard 2.0 项目,因此虚拟控制台应用程序项目可以是.NET 6.0。
添加迁移的步骤:
- In the 类库项目,安装所使用的相应 EFCore 平台的 Nuget 包(例如,对于 SQLite,安装
Microsoft.EntityFrameworkCore.Sqlite
). 不要安装最新版本但最后一个依赖于 .NET Standard 2.0,即3.1.21
在撰写本文时。
- In the 虚拟控制台应用程序项目,安装这个Nuget包:
Microsoft.EntityFrameworkCore.Design
。出于兼容性目的,安装相同版本作为上一步中选择的版本(例如3.1.21
).
- In the 应用项目,添加对类库项目。 (右键单击项目,选择
Add > Project Reference...
,并勾选类库项目.)
- In the 虚拟控制台应用程序项目,添加对类库项目。请注意,无需更改任何其他内容虚拟控制台应用程序项目,尽管该项目不必构建(部署较少),所以请随意打开配置管理器,然后取消勾选Build (and Deploy)。此外,在配置管理器,不必费心将平台(x64、任何 CPU...)更改为与引用的平台相同类库项目。毕竟,虚拟控制台应用程序项目不会被构建,因此请忽略有关架构与架构不同的任何警告类库项目.
- 重建您的解决方案以确保没有其他问题发生。如果有,请先修复它们,然后再继续。
- 打开命令提示符(提示:使用 Windows 文件资源管理器导航到解决方案的根文件夹,然后键入
cmd
在地址栏中打开该文件夹中的命令提示符)。
- 输入以下内容(
-p
发出信号目标项目 while -s
表示启动项目):
?> dotnet ef migrations add #MigrationName -s #DummyConsoleAppProject -p #ClassLibraryProject
- 或者,卸载虚拟控制台应用程序项目,并在下次需要它来添加迁移时再次加载它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)