我正在研究Net Core和Blazor,并且面临以下问题。
我创建了一个新的Blazor Web组装解决方案,其网络核心托管有用户身份验证。默认情况下,该解决方案分为三个项目:客户端,服务器和共享。我将模型放入共享项目中,但现在我需要在模型和存在的ApplicationUser模型之间设置关系(一对多,多对多,如此处所述:https://docs.microsoft.com/en-us/ef/core/modeling/relationships,如此处所述:{{3}})在服务器项目中。
我无法放入模型
public ApplicationUser User { get; set; }
因为我不能这样做
using mysolutionname.server;
因为服务器项目依赖于共享并且共享不能依赖于服务器(循环依赖)。
我该如何解决?
答案 0 :(得分:2)
Shared项目应仅包含由Client和Server项目共享的对象。例如,默认Visual Studio模板中的Client和Server项目使用的WeatherForecast类驻留在Shared项目中,因为两个项目都使用该类。但是,诸如ApplicationUser(或ApplicationDbContext)之类的对象仅在服务器上使用,不能并且不能在Client项目上使用,并且默认模板产生的对象的当前位置不应以您认为的方式更改。>
希望这对您有帮助...
答案 1 :(得分:0)
如果遇到循环依赖问题,则通常意味着您的应用程序体系结构中存在某些问题。
对于您来说,在不同位置定义数据对象不是一个好习惯,在所有流行的软件模式中,数据模型都与其他组件分开。
如果ApplicationUser本质上是一个数据库对象,则它必须位于您的数据库层中,并且应用程序使用该数据库层。
单独保留这些层有很多好处。仅举一些例子:
如果需要另一个库的子应用程序用户,则应在数据库层中引用该库。