启动项目“EFGetStartedUWP”是一个通用 Windows 平台应用程序。此版本的 Entity Framework Core 包管理器控制台工具不支持此类项目。有关将 EF Core 工具与 UWP 项目结合使用的详细信息,请参阅 https://go.microsoft.com/fwlink/?linkid=858496
为了学习,我正在尝试将 SQLite 数据库连接到基本的 UWP 应用程序,但是当我尝试迁移时。它只是不断给我上面的错误。我在互联网上搜索了很多,但没有得到合适的答案。 Microsoft 文档在这种情况下没有用处。我还安装了 Microsoft.EntityFrameworkCore.Sqlite 和 Microsoft.EntityFrameworkCore.Tools。
如果有人可以建议任何其他方式将 SQLite 数据库连接到 UWP,那也将非常有用,因为我对 C# 还很陌生,而且我有一个大学项目要在 UWP 应用程序上完成。
最佳答案
我刚刚遇到了类似的问题,并且很幸运地解决了它。首先,我发现这些链接非常有用: Entity Framework Core tools reference - .NET Core CLI - Other target frameworks和 Common options .
就我而言,我的解决方案最终的配置如下:
- 应用程序项目(通用 Windows)- 解决方案的启动项目,
- 类库项目 (.NET Standard 2.0) - 包含模型和上下文类,
- 虚拟控制台应用项目 (.NET 6.0) - 必须充当工具的启动项目。
考虑到(在撰写本文时)UWP doesn't support .NET Standard 2.1 。它支持 .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。
添加迁移的步骤:
- 在类库项目中,安装所使用的相应 EFCore 平台的 Nuget 包(例如,对于 SQLite,安装
Microsoft.EntityFrameworkCore.Sqlite
)。 不要安装最新版本,而是安装依赖于 .NET Standard 2.0 的最后一个版本,在撰写本文时该版本为3.1.21
。 - 在虚拟控制台应用项目中,安装此 Nuget 包:
Microsoft.EntityFrameworkCore.Design
。出于兼容性目的,请安装与上一步中选择的版本相同的版本(例如3.1.21
)。 - 在应用程序项目中,添加对类库项目的引用。 (右键单击该项目,选择
添加 > 项目引用...
,然后勾选类库项目。) - 在虚拟控制台应用项目中,添加对类库项目的引用。请注意,尽管不必构建项目(部署较少),但无需更改虚拟控制台应用项目中的任何其他内容,因此请随意打开配置管理器 em>,然后取消选中构建(和部署)。此外,在配置管理器中,不必费心将平台(x64、任何CPU...)更改为与引用的类库项目相同。毕竟,将不会构建虚拟控制台应用项目,因此请忽略有关架构与类库项目不同的任何警告。
- 重建您的解决方案以确保没有其他问题发生。如果有,请在继续之前修复它们。
- 打开命令提示符(提示:使用 Windows 文件资源管理器导航到解决方案的根文件夹,然后在地址栏中键入
cmd
以在该位置打开命令提示 rune 件夹)。 - 输入以下内容(
-p
表示目标项目,而-s
表示启动项目):
?> dotnet ef migrations add #MigrationName -s #DummyConsoleAppProject -p #ClassLibraryProject
- (可选)卸载虚拟控制台应用项目,并在下次需要它添加迁移时再次加载。
关于c# - Entity Framework 工具不适用于 UWP 应用程序 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59444014/