【问题标题】:UWP 中的存储库模式
【发布时间】:2022-01-22 05:07:42
【问题描述】:

我正在尝试创建一个 UWP 应用程序,并有机会启动许多基于测验的游戏。出于这个原因,我有一个核心项目(UWP),它将显示所有游戏模式。每个游戏模式都在自己的项目中实现,我想为每个游戏模式添加一个单独的数据访问层。 (DAL 将实现存储库模式)

所以,我的核心项目 (UWP) 引用了 AllOrNothing(Class Library Universal Windows) 项目。到这一步还好。当我尝试添加实体框架将使用的项目时,我真的不知道应该选择哪种类型的项目。

  • 如果我没看错的话,只有 .NET Standard 2.0 和特定的 UWP 类库可以从 AllOrNothing(UWP Library) 项目中引用。例如,如果我尝试从 UWP 库中引用 .NET 6 项目,则会引发错误。

所以我添加了一个 .NET Standard 2.0 库,并安装了 EF(版本 6.4.4)和 EF Core(版本 3.1.22) 当我运行命令add-migration Init 时,它会显示以下内容: Project 'QuizProgram.Core' targets framework '.NETStandard'. The Entity Framework Package Manager Console Tools don't support this framework.QuizProgram.Core是我的创业项目) 我不是很了解这个问题,也无法真正解决它。

我正在使用 Visual Studio 2022。

【问题讨论】:

标签: c# .net visual-studio entity-framework uwp


【解决方案1】:

您无法从 UWP 引用 .NET Core/5/6 或 Standard 2.1 项目,正如您自己发现的那样。您可以参考 .NET Framework 4.8 或更早版本(如果您的 UWP 项目与目标版本相同或更高)或 .NET Standard 2.0。

如果您可能希望与 .NET Core/5/6 共享库,则需要选择 .NET Standard 2.0。如果您不这样做,那么 .NET 4.8 是更好的选择,因为它是框架的更新版本。

听起来您使用的是 .NET Standard 2.0。在这种情况下,出于兼容性目的,您需要使用 DF 3.1.22 或更早版本。您还需要使用引用 .NET 框架或 .NET Core 的启动项目以及定义 EF 模型的 .NET Standard 库,因为 .NET Standard 2.0 无法执行迁移。其语法如下:

dotnet ef migrations script --project YourNetStandardEFModel --startup-project YourNet48ProjectReferencingIt

【讨论】:

  • 我使用 .NET Framework 4.8 (EFHelper) 创建了一个项目,从中引用了 EFModel 项目,运行您建议的命令后,我遇到了以下问题:
  • Path\QuizProgram_V01\EFHelper\obj\EFHelper.csproj.EntityFrameworkCore.targets(4,5):错误 MSB4006:在涉及目标“GetEFProjectMetadata”的目标依赖图中存在循环依赖。 [C:\Users\Csabi\Documents\Személyes\Ta4,5): 错误 MSB4006: 有一个 circul4,5): er4,5): 错误 MSB4006: 目标依赖图中存在一个循环依赖,涉及目标“GetEFProjectMetadata ”。 Path\QuizProgram_V01\EFHelper\EFHelper.csproj] 无法检索项目元数据。确保它是一个 SDK 风格的项目。
  • 如果您使用自定义 BaseIntermediateOutputPath 或 MSBuildProjectExtensionsPath 值,请使用 --msbuildprojectextensionspath 选项。
  • 我也运行过这个 PMC 控制台:Add-Migration Initial -Project QuizGame.AllOrNothing.Repository -StartupProject EFHelper 但这给了我另一个错误:
  • 其中有趣的部分是错误消息所在,因为 EFHelper 不是 .NET Standard 而是 .NET Framework 4.8,它是 100%
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多