簡體   English   中英

Blazor wasm,網絡核心托管,具有身份驗證,應用程序用戶和我的模型在共享項目中的關系

[英]Blazor wasm, net core hosted, with authentication, relationships between applicationuser and my models in the shared project

我正在研究 Net Core 和 Blazor,我面臨以下問題。

我創建了一個新的 Blazor web 組裝解決方案,使用用戶身份驗證托管網絡核心。 該解決方案默認分為三個項目:客戶端、服務器和共享。 我將我的模型放在共享項目中,但現在我需要設置關系(一對多、多對多,......如下所述:https://docs.microsoft.com/en-us/ef /core/modeling/relationships )在我的模型和位於服務器項目中的 ApplicationUser model 之間。

在我的 model 里面我放不下

public ApplicationUser User { get; set; }

因為我不能這樣做

using mysolutionname.server;

因為服務器項目依賴於共享,而共享不能依賴於服務器(循環依賴)。

我該如何解決這個問題?

共享項目應僅包含客戶端和服務器項目共享的對象。 例如,默認 Visual Studio 模板中客戶端和服務器項目使用的 WeatherForecast class 位於共享項目中,因為兩個項目都使用此 class。 但是像ApplicationUser(或ApplicationDbContext)這樣的對象只用在服務端,不能也不能用在Client項目上,而且它們的默認模板生成的當前位置也不應該像你想象的那樣改變。

希望這可以幫助...

如果您遇到循環依賴問題,這主要意味着您的應用程序架構中有問題。

在您的情況下,在不同位置定義數據對象不是一個好習慣,在所有流行的軟件模式中,數據 model 與其他組件分開。

如果 ApplicationUser 基本上是一個數據庫 object,它需要存在於您的數據庫層並且應用程序使用該數據庫層。

單獨保留這些層有很多好處。 僅舉一些例子:

  • 您可以單獨維護您的項目,而無需它們相互依賴。
  • 沒有循環依賴
  • 您可以共享 model 而不共享其他部件
  • 如果數據庫層發生了一些變化,您可以在一個中心位置進行更改。

如果您需要來自另一個庫的子應用程序用戶,您應該在數據庫層中引用該庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM