Blazor wasm,托管的网络核心,具有身份验证,共享项目中的应用程序用户和我的模型之间的关系



我正在学习Net Core和Blazor,我面临以下问题。

我创建了一个新的 Blazor Web 程序集解决方案,该解决方案使用用户身份验证托管的网络核心。默认情况下,该解决方案分为三个项目:客户端、服务器和共享。我将模型放在共享项目中,但现在我需要设置关系(一对多、多对多......如下所述:https://learn.microsoft.com/en-us/ef/core/modeling/relationships (在我的模型和位于服务器项目中的 ApplicationUser 模型之间。

在我的模型中,我不能把

public ApplicationUser User { get; set; }

因为我做不到

using mysolutionname.server;

因为服务器项目依赖于共享,而共享不能依赖于服务器(循环依赖(。

我该如何解决这个问题?

共享项目应仅包含客户端和服务器项目共享的对象。例如,客户端和服务器项目在默认的Visual Studio Template中使用的WeatherForecast类驻留在共享项目中,因为两个项目都使用此类。但是,诸如 ApplicationUser(或 ApplicationDbContext(之类的对象只能在服务器上使用,不能也不能在客户端项目上使用,并且不应按照您设想的方式更改它们由默认模板生成的当前位置。

希望这有帮助...

如果您遇到循环依赖问题,这主要意味着您的应用程序架构中存在问题。

在您的情况下,将数据对象定义在不同的位置不是一个好的做法,在所有流行的软件模式中,数据模型都与其他组件分开。

如果 ApplicationUser 基本上是一个数据库对象,它需要位于您的数据库层中,并且应用程序使用此数据库层。

单独保留这些图层有很多好处。仅举一些例子:

  • 您可以单独维护您的项目,而无需它们相互依赖。
  • 无循环依赖
  • 您可以在不共享其他零件的情况下共享模型
  • 如果数据库层有一些更改,则有一个中心位置可以更改它。

如果需要来自另一个库的子应用程序用户,则应在数据库层中引用该库。

相关内容

最新更新