簡體   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