繁体   English   中英

UWP 中的存储库模式

[英]Repository Pattern in UWP

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

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

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

所以我添加了一个 .NET 标准 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. Project 'QuizProgram.Core' targets framework '.NETStandard'. The Entity Framework Package Manager Console Tools don't support this framework. QuizProgram.Core是我的启动项目)我不是很了解这个问题,也无法真正解决它。

我正在使用 Visual Studio 2022。

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

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

听起来您正在使用 .NET 标准 2.0。 在这种情况下,出于兼容性目的,您需要使用 DF 3.1.22 或更早版本。 You will also need to use a startup project that references either .NET framework or .NET Core and also the .NET Standard library where you have your EF model defined, because .NET Standard 2.0 cannot perform the migrations. 其语法如下:

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

我使用 .NET Framework 4.8 (EFHelper) 创建了一个项目,从中引用了 EFModel 项目,在运行您建议的命令后,我遇到了以下问题:

Unable to retrieve project metadata. Ensure it's an SDK-style project. If you're using a custom BaseIntermediateOutputPath or MSBuildProjectExtensionsPath values, Use the --msbuildprojectextensionspath option. 

我也运行了这个 PMC 控制台: Add-Migration Initial -Project QuizGame.AllOrNothing.Repository -StartupProject EFHelper 但这给了我另一个错误:


The interesting part of it, that the error message lies, because the EFHelper is not .NET Standard but .NET Framework 4.8, it's 100%

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM